Статус: В разработке. Серверная часть приложения организации конференции по показу презентаций. Сервер предназначен для
- организации обмена данными для установления p2p связи между участниками (signaling server), согласно стандарту WebRTC.
- также используется как web сервер, отдавая сборку клиентской части https://github.com/ORusak/webrtc-presentation-conference-app
Протокол установки связи учитывает организацию топологии "звезда" клиентской части. Обмен sdp, ice пакетами идет только собственника комнаты и конкретного участника.
Связь участников организована полностью с использованием технологии WebRTC на клиентской части участников. Включая:
- просмотр презентации
- видео/аудио связь
- чат
Демо доступно по ссылке demo. Самый простой способ открыть 2 или более вкладки в Google Chrome.
- Организация обмена пакетами через socket
- Разделение логики обмена различными типами пакетов для лучшего управления (логирования, обработки)
На текущий момент реализовано
- Обмен пакетами через socket
- Возможность клиентам полностью осуществить соединение
- Не реализована возможность конвертации sdp пакетов в различные форматы в зависимости от клиента (Unified Plan, Plan B). Клиентская часть может работать не стабильно на разных браузерах.
- Выделить отдельно слой обработки ошибок
- Организовать доставку ошибок на клиент для обработки
- Реализовать слой валидации входящих/выходящих данных контроллеров
- init - регистрация в комнату. В рамках можно проводить операции:
- определение типа участника, проверка собственности, регистрацию.
- sdp - возможность обработки, передача sdp пакета
- ice - передача ice пакета
- Тип звезда
- Центр соединения - это хозяин комнаты
- К центру присоединяются участники комнаты
- Весь поток данных идет через хозяина комнаты
- Данная архитектура подразумевает маршрутизацию пакетов от участников только хозяину комнаты, от участников только хозяину.
- nodejs, socket
- socket.io, server.js
- LTS версия больше 8.9.1
- Ограничения в проекте используются simlink. Может не корректно работать на ОС windows. Если нет возможности запустить на семейство unix или mac os, то воспользуйтесь demo
- Склонируйте репозиторий, установите зависимости
git clone https://github.com/ORusak/webrtc-presentation-conference-server.git
cd webrtc-presentation-conference-server
npm i
npm start
- Проект будет доступен по адресу http://localhost:8080/
- Далее можно локально развернуть клиентскую часть следуя инструкциям (https://github.com/ORusak/webrtc-presentation-conference-app)
- Или перейти http://localhost:8080/app/webrtc/build. Это включенная в сервер сборка клиента, может быть не последней версии.