Как установить одноранговое соединение в веб-приложении с помощью сервера coturn (stun / turn)

Я создаю веб-приложение для видеотрансляции. Я использую Django для веб-приложения и включаю сервер сигнализации (STUN / TURN). Моя цель - сделать это с помощью WebRTC.

Я не знаю, как подключить одноранговый узел к серверу сигнализации, чтобы он был доступен другим одноранговым узлам. Итак, что мне нужно знать, так это как установить «PeerConnection». В веб-приложении у меня есть все, что мне нужно (я думаю): user.id, общий секрет, IP-адрес и порт сигнального сервера ... Но я не знаю, как смешать это в сценариях HTML JS для подключения к серверу coturn.

Я читал документацию по серверу coturn и искал несколько примеров, но не могу найти примеров для этой части.

Кто-нибудь может показать мне пример?


person serfer2    schedule 24.01.2016    source источник


Ответы (2)


Я думаю, вы немного запутались, coturn это не сигнальный сервер, это TURN / STUN-сервер.

Сервер сигнализации - это то, что вы обмениваетесь sdp, ледяными кандидатами и другими данными между одноранговыми узлами до того, как они получат прямое одноранговое соединение, coturn этого не делает.

Я не могу объяснить все биты, но суть в том, что STUN используется для предоставления общедоступного IP-адреса однорангового узла, а TURN используется для прокси-точки для передачи и приема данных от однорангового узла, когда к нему нельзя получить прямой доступ, и в большинстве случаев все вы require - это STUN-сервер. Единственный раз, когда они участвуют в вашем приложении WebRTC, - это когда вы создаете объект PeerConnection, вы передаете данные сервера STUN / TURN в объекте конфигурации, например:

let pc = new RTCPeerConnection({
  "iceServers": [
    {"urls": "stun:example.com"},  // STUN Server address
    {"urls": "turn:example.com", "credential": "test", "username": "test"}  // TURN Server address
  ] 
}); 
person mido    schedule 25.01.2016
comment
Обратите внимание, что url устарел urls, который может быть либо строкой URL-адреса, либо массивом из нескольких строк URL-адресов для одного и того же сервера. - person jib; 25.01.2016
comment
Спасибо, что разъяснили мне этот момент! Насколько я понимаю, мне не нужно использовать coturn, только один сигнальный сервер, такой как SignalMaster, или любой другой подобный ему. Я ошибся? Вы можете мне посоветовать какой-нибудь сигнальный сервер? - person serfer2; 26.01.2016
comment
@ serfer2 перейдите по этой ссылке: webrtc-experiment.com/docs/webrtc -for-newbies.html - person mido; 26.01.2016

Насколько я понимаю, мне не нужно использовать coturn, только один сигнальный сервер, такой как SignalMaster, или любой другой подобный ему. Я ошибся?

Вам все еще может понадобиться coTurn или любой другой сервер STUN / TURN для достижения однорангового или ретрансляционного соединения, когда соединение хост-хост невозможно. STUN / TURN требуется для ICE, чтобы иметь серверно-рефлексивные и ретранслируемые кандидаты для выполнения ICE и гарантировать возможность подключения.

WebRTC работает как модель предложение-ответ, поэтому вам нужен какой-то метод сигнализации, такой как SIP / Jingle, или другой механизм сигнализации для обмена SDP между двумя сторонами. Вы можете использовать стороннее решение, описанное выше, для реализации WebRTC, или можете написать свой собственный простой стек сигнализации.

person Palash Borhan Uddin    schedule 28.01.2016