Настройка Nodejs WebRTC Video Call, и Turn / ICE не удается, CORS заблокирован

На самом деле я следовал этой кодовой метке WebRTC ( https://codelabs.developers.google.com/codelabs/webrtc-web/), но застрял при необходимости подключения к серверам ICE.

Необходимый код здесь:

main.js

var pcConfig = {
  'iceServers': [{
    'url': 'stun:stun.l.google.com:19302'
}

[...]

if (location.hostname !== 'localhost') {
 requestTurn(
   'https://computeengineondemand.appspot.com/turn?username=41784574&key=4080218913');}

Обычно я получаю сообщение об ошибке: "Ошибка ICE" или "Запрос перекрестного источника заблокирован. Политика одного источника запрещает чтение удаленного ресурса по адресу https://computeengineondemand.appspot.com/turn?username=41784574&key=4080218913. (Причина: отсутствует заголовок CORS "Access-Control-Allow-Origin"). "

Согласно последнему, я включил "заголовки A2enmod" и установил для него значение apache.conf "Заголовок всегда устанавливает Access-Control-Allow-Origin "*""

Проблема сохраняется. Мой сервер STUN имеет вид "url": "stun:stun.l.google.com:19302" "Насколько я понял, STUN должен работать 80% времени. Но это никогда не работает. Поэтому, даже если TURN-сервер больше не будет работать, он должен иногда соединяться со STUN?

1 ответ

Решение

STUN должен работать 80% времени, это означает, что для 80% конечных пользователей Интернета STUN должен работать некоторое (большинство) времени. Находитесь ли вы в этих 80%, зависит от конфигурации сети, особенно от того, разрешен ли UDP.

Вы можете проверить трафик STUN самостоятельно, используя такой инструмент, как Wireshark или tcpdump.

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

Вы также должны добавить сервер TURN к вашему iceServers,

Другие вопросы по тегам