WebRTC "ICE Failed", ошибка
Итак, я пытаюсь построить webrtc video chat
веб-приложение, использующее peer.js
, Пока все хорошо, кажется, все работает правильно. Проблема начинается, когда я запускаю свое приложение на своем частном сервере.
Каждый раз, когда я пытаюсь ответить или позвонить, видео начинает воспроизводиться в течение нескольких секунд, но с черным экраном, и затем я получаю ICE Failed
ошибка и это отключает.
Это не произойдет, если два пользователя имеют один и тот же IP-адрес. Если пользователи используют один и тот же ip, видео-чат работает нормально и проблем нет вообще.
В чем может быть проблема здесь?
ОБНОВИТЬ
я добавил оглушение и включил сервер, но снова получаю ту же ошибку
peer = new Peer({ key: peerApiKey, debug: 3, config: {'iceServers': [
{ url: 'stun:stun.l.google.com:19302' },
{ url: 'stun:stun1.l.google.com:19302' },
{ url: 'turn:numb.viagenie.ca:3478', credential: 'muazkh', username:'webrtc@live.com' },
{ url: 'turn:numb.viagenie.ca', credential: 'muazkh', username:'webrtc@live.com' },
{ url: 'turn:192.158.29.39:3478?transport=udp', credential: 'JZEOEt2V3Qb0y27GRntt2u2PAYA=', username:'28224511:1379330808' },
{ url: 'turn:192.158.29.39:3478?transport=tcp', credential: 'JZEOEt2V3Qb0y27GRntt2u2PAYA=', username:'28224511:1379330808' }
]}});
1 ответ
Решение
- Вам нужно установить действительный сервер STUN (возможно, настройки по умолчанию peer.js не работают). Это решит проблему примерно в 80% случаев.
- В некоторых ситуациях для совершения звонков также требуется услуга TURN.
- А в некоторых ситуациях даже TURN недостаточно (например, если UDP заблокирован для обоих концов), и в этих обстоятельствах вам необходим сервер для маршрутизации мультимедиа (через TCP/TURN).