WebRTC: в Firefox отсутствуют кандидаты на ретрансляцию

У меня проблемы с установкой соединения WebRTC, когда задействован firefox и необходим сервер TURN. Причину можно воспроизвести с помощью этого инструмента тестирования: https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

Попробуйте следующую конфигурацию сервера оглушения:

URI: Turn: numb.viagenie.ca

имя пользователя: [email protected]

пароль: тест

В хроме появляются кандидаты на реле. В firefox их нет. Но почему?

Результат в Chrome 56.0.2924.87 (64-разрядная версия): Time Component Type Foundation Protocol Address Port Priority 0.002 1 host 2969322736 udp 192.168.178.29 58537 126 | 30 | 255 0.002 1 host 1665573758 udp 2001::34ad:4890:3ce5:1be4:aa2b:d831 58538 126 | 10 | 255 0.002 2 host 2969322736 udp 192.168.178.29 58539 126 | 30 | 254 0.003 2 host 1665573758 udp 2001::34ad:4890:3ce5:1be4:aa2b:d831 58540 126 | 10 | 254 0.544 1 srflx 842163049 udp 85.212.39.206 58537 100 | 30 | 255 0.553 2 srflx 842163049 udp 85.212.39.206 58539 100 | 30 | 254 0.658 1 relay 3433799847 udp 66.228.45.110 57491 2 | 30 | 255 0.677 2 relay 3433799847 udp 66.228.45.110 57492 2 | 30 | 254 0.678 Done

Результат в Firefox 51.0.1 (32-бит): Time Component Type Foundation Protocol Address Port Priority 0.008 1 host 0 UDP 192.168.178.29 52762 126 | 32512 | 255 0.009 1 host 3 UDP 2001:0:9d38:6abd:82d:1d5a:aa2b:d831 52763 126 | 32256 | 255 0.009 2 host 0 UDP 192.168.178.29 52764 126 | 32512 | 254 0.009 2 host 3 UDP 2001:0:9d38:6abd:82d:1d5a:aa2b:d831 52765 126 | 32256 | 254 11.234 Not reachable?


person JT2809    schedule 08.02.2017    source источник
comment
Можете ли вы перечислить кандидатов, которых видите? Я не вижу кандидатов на реле даже в Chrome. Например. В разделе Параметры ICE, если я установлю для IceTransports value: значение relay, я не вижу кандидатов.   -  person jib    schedule 09.02.2017
comment
Ты прав. Я редактировал вопрос.   -  person JT2809    schedule 09.02.2017


Ответы (1)


Когда я тестировал его, сервер TURN отвечает 486 «Достигнута квота распределения». Поскольку сейчас я не получаю кандидатов на ретрансляцию ни с Chrome, ни с Firefox, я думаю, ваш провайдер TURN отключил учетные данные, которые вы разместили здесь. Если вы можете воспроизвести это, я бы порекомендовал взглянуть на about: webrtc в Firefox. В нем должны быть сообщения журнала, указывающие, что происходит не так. Если вы видите что-то подозрительное в журнале, возможно, это ошибка, которую стоит заполнить на bugzilla.mozilla.org.

Обновление: мне удалось воспроизвести проблему. Это ошибка в клиенте Firefox TURN. Я создал для него эту проблему с отслеживанием ошибок https://bugzilla.mozilla.org/show_bug.cgi?id=1338384

Обновление 2: ошибка была исправлена ​​в Firefox 54. Длинное объяснение состоит в том, что coturn включает атрибут полосы пропускания в свои ответные сообщения Firefox. Этот атрибут пропускной способности никогда официально не стандартизировался. И диапазон, в котором находится этот атрибут пропускной способности, требует, чтобы, если клиент не понимает этот атрибут, это считалось ошибкой синтаксического анализа. За исключением того, что в черновике с истекшим сроком действия для атрибута полосы пропускания специально сказано, что понимание значения атрибута полосы пропускания необязательно. Итак, неудачная попытка спецификации + сервер, который реализовал вещи, которые никогда не были официально описаны + клиент, который не понимал результата.

person Nils Ohlmeier    schedule 09.02.2017
comment
Похоже, квота больше не превышена, и я вижу следующее сообщение об ошибке на about: webrtc (я посмотрю на это позже сегодня): Нераспознанный атрибут: 0x0010 STUN-CLIENT (relay (IP4: 10.252.27.46: 50759 / UDP | numb.viagenie.ca: 3478) :: TURN): Получен ответ; обработка STUN-CLIENT (relay (IP4: 10.252.27.46: 50759 / UDP | numb.viagenie.ca: 3478) :: TURN): ответ на обработку ошибки: операция отклонена, код ошибки оглушения 0. ICE (PC: 1486673561857884 (id = 2147488911 url = webrtc.github.io/samples/src/content/ peerconnection / trickle-ice)): сообщение не соответствует ни одному зарегистрированному stun ctx - person Nils Ohlmeier; 09.02.2017
comment
Хорошо, мои ноу-хау WebRTC ограничены, но, похоже, это не проблема с кодом моего приложения. Теоретически отлично, но есть ли решение на стороне сервера или клиента, чтобы запустить его? Я также пробовал образ докера с coTurn. Та же проблема. - person JT2809; 13.02.2017
comment
Нет, это не проблема в коде вашего приложения. Проблема в том, что coturn отправляет добавляет к своим сообщениям атрибут, который Firefox не может правильно обработать. Проблема была исправлена ​​в Firefox 54 (сейчас это Firefox Nightly). Я не знаю, можно ли как-то настроить coturn, чтобы он не отправлял атрибут пропускной способности. - person Nils Ohlmeier; 14.02.2017
comment
та же проблема здесь с ios webrtc native, после проверки журнала я обнаружил if (! config || config- ›relays.empty ()) {// В этой конфигурации не указаны порты реле. sequence_flags | = PORTALLOCATOR_DISABLE_RELAY; } Кто-нибудь может помочь? Я использую Google Stun - person famfamfam; 08.07.2020
comment
Сервер STUN не предоставит вам кандидатов на ретрансляцию, потому что это не сервер TURN. Только серверы TURN предоставляют наших кандидатов на ретрансляцию. - person Nils Ohlmeier; 09.07.2020