Как установить одноранговое соединение в веб-приложении с помощью сервера 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 или вы можете написать свой собственный простой стек сигналов.