iceConnectionState已断开连接 - VP9 Coded为null - PeerServer

时间:2016-11-14 18:56:07

标签: javascript ssl webrtc peerjs

我有一个使用PeerJS进行视频流的应用程序,我正在使用基于节点Peer Server在Ubuntu Server实例上运行,通过HTTPS(服务器上安装的SSL证书)。

这就是我实现PeerServer的方式:

var server = PeerServer({
port:55127,
path:'/',
debug:true,
ssl:{
    key: fs.readFileSync('/etc/apache2/ssl/mykey.key'),
    cert: fs.readFileSync('/etc/apache2/ssl/mycert.crt')
    }
});

这是我创建对等连接的方式:

var peer = new Peer('peerHost',{host: 'myhost.com', port: 55127, path: '/'})

关于端口,我在UFW和路由器中都允许55127。

由于一些奇怪的原因,我的对等连接和视频流在局域网中完美运行,但在互联网上失败 - 尽管有时它们可​​以工作,例如在3G移动网络的情况下。

在调试Peer连接时,我偶然发现了这些“错误”:

PeerJS: VP9 Codec: null    
PeerJS:  iceConnectionState is disconnected, closing connections to (...)

服务器端没有错误,所有这些错误都在主机或客户端上。

此问题类似于thisthisthis

有没有人知道可能出现什么问题以及如何修复它?

提前致谢。

1 个答案:

答案 0 :(得分:1)

好吧,似乎我遇到this问题,其中一个非常常见的NAT /防火墙场景,在任何家用路由器中都会阻塞我的PeerJS服务器需要访问的端口,从而禁止代理连接,并且不允许视频流式传输。

解决方案是使用中间TURN服务器来覆盖NAT设置。

var peer = new Peer({host: 'host.com', port: 55127, path: '/', debug:true, config: {'iceServers': [{ url: 'stun:stun.l.google.com:19302' },{ url: 'turn:numb.viagenie.ca', username: 'username@gmail.com', credential: 'password' }]}});