Я начинаю с WebRTC, и это в основном вопрос дизайна. Ищем плюсы и минусы двух конкурирующих подходов.
Контекст
Я создаю медиа-сервер, который будет передавать видео нескольким клиентам. Каждый клиент может запросить один или несколько видеопотоков для просмотра на странице браузера, затем закрыть их и запросить другие и так далее. Один клиент может иметь постоянное соединение в течение нескольких часов или дней, переключая разные потоки по своему желанию.
Вопрос
Как мне управлять одноранговыми соединениями с клиентами?
Обдуманные подходы
- Каждая пара (клиент, видеопоток) получает собственное одноранговое соединение. Итак, если клиент просматривает 5 видеопотоков, эта веб-страница будет иметь 5 одноранговых соединений. Каждое одноранговое соединение имеет одну дорожку. Это включает в себя создание / уничтожение одноранговых соединений каждый раз, когда клиент выполняет действие для просмотра / закрытия видеопотока.
- Каждый (клиент) получает одно одноранговое соединение. В зависимости от действий клиента мы либо добавляем треки, либо удаляем треки из однорангового соединения. Единственное соединение существует, пока клиент находится на нашей веб-странице.
На первый взгляд, вариант 2 кажется менее расточительным, поскольку существует одно соединение, но, читая о сигнализации WebRTC, добавление / удаление треков запускает новый раунд предложения / ответа, поэтому я не уверен, что он на самом деле более эффективен. Более того, похоже, что им будет труднее управлять и внедрять, поскольку он более отслеживает состояние, например, чтобы убедиться, что треки правильно очищены, когда они больше не используются.
Спасибо.