我已经尝试了一段时间。我正在尝试使用peerjs建立简单的连接。我可以使用id USER_ID成功连接到对等方。但是,他们无法连接到我。当他们尝试连接时,我收到以下日志。
iceConnectionState最终更改为failed,并且无法接收任何数据。

  • 该应用程序正在使用peerjs云服务器
  • 我正在使用最新版本的Chrome。他们尝试使用最新版本的Chrome和Firefox
  • 他们已关闭所有防火墙
  • 甚至尝试过peerjs chat example,但失败并出现相同的错误。

  • 知道为什么会发生这种情况吗?

    任何帮助表示赞赏!

    peer.min.js:1 PeerJS:套接字打开
    peer.min.js:1 PeerJS:创建RTCPeerConnection。
    peer.min.js:1 PeerJS:聆听ICE候选人。
    peer.min.js:1 PeerJS:侦听“negotiationneeded”
    peer.min.js:1 PeerJS:监听数据通道
    peer.min.js:1 PeerJS:监听远程流
    peer.min.js:1 PeerJS:设置远程描述RTCSessionDescription
    peer.min.js:1 PeerJS:已为USER_ID添加ICE候选
    peer.min.js:1 PeerJS:设置远程描述:提供给:USER_ID
    peer.min.js:1 PeerJS:已创建答案。
    peer.min.js:1 PeerJS:设置localDescription:USER_ID的答案
    peer.min.js:1 PeerJS:已收到USER_ID的ICE候选人
    peer.min.js:1 PeerJS:已为USER_ID添加ICE候选
    peer.min.js:1 PeerJS:已收到USER_ID的ICE候选人
    peer.min.js:1 PeerJS:已为USER_ID添加ICE候选
    peer.min.js:1 PeerJS:已收到USER_ID的ICE候选人
    peer.min.js:1 PeerJS:iceConnectionState已断开,关闭了与USER_ID的连接

    最佳答案

    我有完全一样的问题。添加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:'[email protected]'  } ] } // 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'));
    });
    

    09-25 18:56