3

我一直试图弄清楚这一点。我正在尝试使用 peerjs 建立一个简单的连接。我可以使用 id 成功连接到对等方USER_ID。但是,他们无法连接到我。当他们尝试连接时,我收到以下日志。

iceConnectionState改成failedfinally,就收不到数据了。

  • 该应用程序正在使用 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:监听“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: 设置 remoteDescription: OFFER for: 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:为 USER_ID 添加了 ICE 候选者
peer.min.js:1 PeerJS:收到 ICE 候选:USER_ID
peer.min.js:1 PeerJS:为 USER_ID 添加了 ICE 候选者
peer.min.js:1 PeerJS:收到 ICE 候选:USER_ID
peer.min.js:1 PeerJS:iceConnectionState 已断开连接,正在关闭与 USER_ID 的连接
4

1 回答 1

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'));
});
于 2019-10-02T06:13:34.123 回答