Многоранговое соединение WebRTC

#webrtc

#webrtc

Вопрос:

Я успешно подключил клиентов A и B. Проблема в том, что я хочу добавить новых клиентов, C и D для создания группового чата. Нужно ли мне создавать новое соединение RTC и обмениваться предложениями / ответами / кандидатами ICE для каждого клиента? Например:

A подключается к B A подключается к C A подключается к D B подключается к C B подключается к D C подключается к D C подключается к D

Каждая из приведенных выше клиентских комбинаций порождает свое собственное RTCPeerConnection и проходит через рукопожатие webrtc (предложение, icecandidate, ответ)

Комментарии:

1. У вас есть какой-нибудь код? Очень сложно найти пример, где C может присоединиться к A и B.

Ответ №1:

Нужно ли мне создавать новое соединение RTC и обмениваться предложениями / ответами / кандидатами ICE для каждого клиента?

Точно. Каждому клиенту просто нужно создавать новые RTCPeerConnection , присоединять к ним свои уникальные аудио- и видеодорожки и обменивать их кандидатами SDP и ICE каждый раз, когда приходит новый клиент.

Пример доступен здесь: https://webrtc.github.io/samples/src/content/peerconnection/multiple /

Исходный код: https://github.com/webrtc/samples/blob/gh-pages/src/content/peerconnection/multiple/js/main.js

Комментарии:

1. Это ужасно, если у меня большое количество одноранговых узлов

2. Для группы из 25 участников требуется всего 300 подключений!! (что равно (nCr) = (25 C2) = 300 см. calculatorsoup.com/calculators/discretemathematics /… )

3. Каждому участнику необходимо будет подключиться к каждому участнику, поэтому, если их 25, у каждого участника будет 24 соединения

4. Если только один из членов группы не является «ведущим», у которого есть 1 одно соединение со всеми клиентами (подчиненными), так что у вас есть только 24 соединения (соединения master-slave). Это полностью зависит от того, находитесь ли вы в иерархической структуре (master / slave) или в «плоской» чистой peer2peer one (25 * 24 соединения)

5. В этом примере используется 3 фиксированных узла и только 2 двусторонних соединения вместо 3. У вас есть какой-нибудь пример, где C может присоединиться к A и B? Спасибо!