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

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

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

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

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

2 ответа

Решение

Я думаю, что вы немного смущены, coturn это не сервер сигнализации, это сервер TURN/ STUN.

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

Я не могу объяснить все биты, но суть в том, что STUN используется для предоставления общедоступного IP-адреса однорангового узла, а TURN используется для прокси-точки для передачи и получения данных от однорангового узла, когда к нему нельзя получить прямой доступ, и в большинстве случаев все вы Требуется сервер 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
  ] 
}); 

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

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

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

Другие вопросы по тегам