Настройка 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
,