Очень хорошее объяснение можно найти в этой книге http://chimera.labs.oreilly.com/books/1230000000545/ch03.html#STUN_TURN_ICE , которая содержит основы того, как WebRTC использует технологию ICE.
В частности, предполагая, что IP-адрес сервера STUN известно, применение WebRTC сначала отправляет запрос привязки к серверу STUN. Сервер STUN отвечает ответом, который содержит общедоступный IP-адрес и порт клиента, как видно из общедоступной сети.
Теперь приложение обнаруживает свой общедоступный IP-адрес и кортеж портов, который может отправлять другому партнеру через SDP. (обратите внимание, что SDP отправляется по внешнему сигнальному каналу, fi websocket, установленному через веб-службу)
С помощью этого механизма на месте, когда два одноранговых узла хотят разговаривать друг с другом через UDP, они могут затем использовать установленный общедоступный IP-адрес и кортежей портов для обмена данными.
К сожалению, в некоторых случаях UDP может быть заблокирован брандмауэром. Чтобы устранить эту проблему, всякий раз, когда STUN терпит неудачу, мы можем использовать протокол Traversal Using Relays вокруг протокола NAT (TURN) как резерв, который может работать через UDP и переключиться на TCP, если все остальное не работает.
WebRTC предоставляет приложение SDP клиенту JS-приложение для отправки (однако приложение JS) на другое устройство, которое использует это для генерации ответа SDP.
Фокус в том, что SDP включает кандидатов ICE (эффективно «попробуйте поговорить со мной по этому IP-адресу и этому порту»). ICE работает, чтобы открыть открытые порты в брандмауэрах; хотя, если обе стороны являются симметричными NAT, это будет невозможно вообще, и может быть использован альтернативный кандидат (на сервере TURN).
Как только они разговаривают напрямую (или через TURN, что фактически является зеркалом пакета), они могут открывать соединение DTLS и использовать его для подключения медиа-потоков SRTP-DTLS и для отправки DataChannels через DTLS.
Редактировать: Акроним здесь: http://blog.1click.io/10-jargons-abbreviations-for-webrtc-fans/ для отдыха, есть Google. Большинство из них определяются IETF (http://ietf.org/)
Edit 2: Firefox и Chrome (и спецификации) перешли к использованию «ручеек» для кандидатов ICE, поэтому кандидаты ICE, как правило, добавляют после того, как-лицо к PeerConnection и обмениваться независимо от первоначальной SDP (хотя вы можете подождать, пока первые кандидаты не будут готовы до отправки предложения, и свяжите их вместе). См. https://webrtcglossary.com/trickle-ice/ и https://datatracker.ietf.org/doc/draft-ietf-ice-trickle/
Вы мне не очень понятны .. В основном видеозвонок осуществляется через Peer-Peer Connection. Поэтому, пожалуйста, уточните, что такое точная проблема. – Gattsu
@ Maveň Я думаю, что заголовок вопроса должен быть ** Как поделиться «roomID» с другим пользователем, которому вы хотите получить доступ **. : D – Gattsu