2015-12-02 6 views
1

2 разных компьютера, 2 хром, 2 разных сети.Соединение WebRTC - STUN и TURN одновременно?

Я делаю вызов WebRTC между двумя одноранговыми узлами, описанными выше, и используя getStats(), чтобы проверить соединение. Дело в том, что в одном Chrome он показывает «turn» в свойстве «connection», а на другом показывает «stun».

Возможно ли это? Я думал, ты либо подключился через то или другое?

ответ

2

Да, это возможно.

Первый браузер будет использовать ICE-кандидат, полученный на сервере TURN. Второй браузер будет использовать ICE-кандидат, полученный STUN (например, общедоступный IP-адрес).

Фактически, серверам TURN не нужно передавать потоки WebRTC на удаленный сервер TURN. Если одноранговый узел может связаться с удаленным сервером TURN без использования его TURN, для обмена данными будет использоваться только один сервер ретрансляции.

Однако вы можете использовать следующий параметр "iceTransports": "relay" в конфигурации своего RTCPeerConnection вашего webapp, чтобы заставить обозреватель использовать сервер TURN.

+0

Значит, есть еще реле между сверстниками, не так ли? Это как PEER1 TURNSERVER PEER2? – igorpavlov

+0

Да, вы правы :) В этом случае Peer 1 будет использовать свой STUN ICE Candidate для присоединения к кандидату 2-го уровня ICE. –

0

Обычно кандидат на ретрансляцию, выбранный в обоих концах, является редким сценарием, для случаев с ресиверами большую часть времени вы в конечном итоге получаете кандидат на реле в одном конце и кандидат-рефлексив/реверсивный сервер в другом конце, reflexive/peer-reflexive выбранный конец идентифицирует себя как STUN или одноранговый кандидат, но его фактическое ретрансляционное соединение, лучше всего обнаружить ваш исходный тип соединения, чтобы проверить тип кандидата вашего обоим конца.