WebRTC: нужен ли сервер TURN? (Поможет ли это?)

У меня есть приложение для чата с веб-камерой (так что это обмен видео «многие ко многим») с использованием WebRTC и сервера mediasoup.

У меня проблемы с НЕКОТОРЫМИ моими пользователями, которые не могут заставить работать входящие видеопотоки. Это трудная проблема, потому что я вообще не могу ее воспроизвести, и я не могу легко «удаленно отладить» проблему, так как большинство моих пользователей совершенно не разбираются в технике. Пока единственное, что я могу сказать наверняка, это то, что это, похоже, связано с сетью, а не с браузером, поскольку у меня были отчеты об ошибках от людей, использующих Firefox, Chrome, Safari и Edge. Я запускаю свой сервер (mediasoup v2) через порт 443 без брандмауэра на сервере, так что дверь должна быть как можно шире. Я просто еще не знаю, в чем именно проблема, поэтому я чувствую себя в темноте.

Итак, я пробую решения. Я не думаю (?), что у меня настроен сервер TURN, но из того, что я прочитал, кажется, что его добавление определенно не повредит и может помочь в моей ситуации.

Я не совсем понимаю весь протокол WebRTC или RFC 7118 (эти вещи действительно сложны!) или что/где/как сервер TURN вписывается в общую картину. Это помогло бы, верно? Много гугления не привело к четким ответам. Хотелось бы помощи! Спасибо!


person Eric    schedule 18.08.2019    source источник


Ответы (2)


WebRTC пытается сделать все возможное, чтобы установить p2p-соединение, но бывают случаи, когда это не удается. Сервер поворота действует как последнее средство, так что оба узла могут подключаться через сервер поворота. Очевидно, что это не p2p-соединение, поэтому будет дополнительная задержка, и вам нужно будет убедиться, что ваш сервер Turn имеет достаточную пропускную способность для покрытия всех ожидаемых соединений.

TL; DR, если вам нужна скорость соединения 100%, у вас должен быть сервер очереди.

Я считаю, что у AWS есть готовый экземпляр, который вы можете развернуть, или если вы можете использовать этот сервер coturn с открытым исходным кодом https://github.com/coturn/coturn

На заметку об отладке... Проверьте тип ваших ледяных кандидатов. Вы должны увидеть host и srflx, если у вас есть только сервер STUN, но если у вас есть сервер TURN, вы также увидите relay. Вы можете воспроизвести эту проблему, отбросив ледяных кандидатов, которые имеют типы host и srflx.

person RooterTooter    schedule 20.08.2019
comment
Спасибо. В итоге я подписался на Twilio, у которого есть готовые к использованию серверы TURN/STUN, которые стоят очень дешево. Мое приложение проводит сотни часов видео/аудиочатов в месяц, и я думаю, что мой счет за Twilio в этом месяце будет меньше 1 доллара США! - person Eric; 30.08.2019

Я использую свой сервер (mediasoup v2) на порту 443 без брандмауэра на сервере, так что дверь должна быть как можно шире.

Это вебсокет. Медиа-трафик обычно проходит через UDP, а mediasoup использует случайные порты. Сервер TURN, настроенный на udp-порт 443, может помочь в некоторых случаях. Другая проблема заключается в том, что UDP блокируется, что легко воспроизвести с помощью локального брандмауэра. Mediasoup поддерживает нечто, называемое ice-tcp, которое позволяет мультимедиа работать через TCP-соединение. Вы должны проверить, использует ли ваша установка mediasoup ice-tcp. Если это не так, поможет сервер TURN с TURN/TCP.

person Philipp Hancke    schedule 21.08.2019