Соединение WebRTC - STUN и TURN одновременно?
2 разных компьютера, 2 Chrome, 2 разные сети.
Я делаю WebRTC вызов между двумя узлами, описанными выше, и использую getStats() для проверки соединения. Дело в том, что в одном Chrome он показывает свойство "turn" в "connection", а в другом - "stun".
Это возможно? Я думал, что вы либо связаны через одного или другого?
2 ответа
Да, это возможно.
Первый браузер будет использовать ICE Candidate, полученный его сервером TURN. Второй браузер будет использовать ICE Candidate, полученный STUN (например, публичный IP-адрес).
Фактически серверам TURN не нужно ретранслировать потоки WebRTC на удаленный сервер TURN. Если узел может связаться с удаленным сервером TURN без использования своего TURN, тогда для связи будет использоваться только один сервер ретрансляции.
Тем не менее, вы можете использовать следующую опцию "iceTransports": "relay"
в конфигурации вашего RTCPeerConnection
вашего веб-приложения, чтобы заставить оба браузера использовать сервер TURN.
Обычно кандидат на ретрансляцию, выбранный в обоих концах, является редким сценарием, для случаев ретрансляции большую часть времени вы будете иметь кандидата-ретранслятора в одном конце и кандидата в рефлексивном сервере / равноправного рефлекса в другом конце, хотя сервер-рефлексивный / одноранговый Рефлексивный кандидат выбранный конец идентифицирует себя как STUN или одноранговый кандидат, но на самом деле это ретрансляционное соединение, лучше всего определить исходный тип соединения, чтобы проверить тип кандидата вашего обоих конца.