Ошибка peerjs/webrtc iceConnectionState

Я пытался понять это некоторое время. Я пытаюсь установить простое соединение с помощью peerjs. Я могу успешно подключиться к узлу с идентификатором USER_ID, Тем не менее, они не могут подключиться ко мне. Я получаю следующий журнал, когда они пытаются подключиться.

iceConnectionState изменено на failed в конце концов, и никакие данные не могут быть получены.

  • Приложение использует облачный сервер peerjs
  • Я использую последнюю версию Chrome. Они пытались использовать последние версии Chrome и Firefox
  • Они отключили любые брандмауэры
  • Даже попробовал пример чата peerjs, и он терпит неудачу с той же ошибкой.

Есть идеи, почему это может произойти / происходит здесь?

Любая помощь приветствуется!

peer.min.js: 1 PeerJS: Розетка открыта
peer.min.js: 1 PeerJS: Создание RTCPeerConnection.
peer.min.js: 1 PeerJS: прослушивание кандидатов на ICE.
peer.min.js: 1 PeerJS: прислушиваться к мнению о необходимости переговоров
peer.min.js: 1 PeerJS: прослушивание канала данных
peer.min.js: 1 PeerJS: прослушивание удаленного потока
peer.min.js: 1 PeerJS: настройка удаленного описания RTCSessionDescription
peer.min.js: 1 PeerJS: добавлен кандидат ICE для: USER_ID
peer.min.js: 1 PeerJS: Установить remoteDescription: ПРЕДЛОЖЕНИЕ для: USER_ID
peer.min.js: 1 PeerJS: Создан ответ.
peer.min.js: 1 PeerJS: установить localDescription: ответить за: USER_ID
peer.min.js: 1 PeerJS: получены кандидаты ICE для: USER_ID
peer.min.js: 1 PeerJS: добавлен кандидат ICE для: USER_ID
peer.min.js: 1 PeerJS: получены кандидаты ICE для: USER_ID
peer.min.js: 1 PeerJS: добавлен кандидат ICE для: USER_ID
peer.min.js: 1 PeerJS: получены кандидаты ICE для: USER_ID
peer.min.js: 1 PeerJS: iceConnectionState отключен, закрывая соединения с USER_ID

2 ответа

У меня была такая же проблема. Добавление серверов STUN TURN должно решить проблему.

Клиентский код

peer = new Peer(this.api.currentUserValue().id+'-'+this.api.currentUserValue().first_name,{
                                                    host: 'localhost',
                                                    port: 8080,
                                                    path: '/api',
                                                    debug: 3,
                                                    config: { 'iceServers': [
                                                      { 'url': 'stun:stun.l.google.com:19302' },
                                                      { 'url': 'turn:numb.viagenie.ca',credential: 'xxxx', username:'xxxx@gmail.com'  } ] } // this is must for keeping the connection open
                                                      });

Код на стороне сервера

var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
var expressPeerServer = require('peer').ExpressPeerServer;
var path = require('path');



app.set('port', (process.env.OPENSHIFT_NODEJS_PORT || "8080"));
app.set('host', (process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1"));

app.use(express.static(path.join(__dirname, '/client')));
app.use('/api', expressPeerServer(server, {debug:true}));




server.listen(app.get('port'),app.get('host'),function(){
  console.log('Server running at %s:%s',app.get('host'),app.get('port'));
});

У меня была эта проблема из-за мобильной точки доступа. Я пытался подключиться к устройству, на котором была включена точка доступа, как только я переключился на другой Wi-Fi и подключил свой сервер и устройства с одним и тем же Wi-Fi(ни на одном из этих устройств не должна быть включена точка доступа), он начал работать.

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