2016-05-25 358 views
0

所以,我试图建立一个webrtc video chat网络应用程序使用peer.js。到目前为止,一切似乎都正常。 当我在我的私人服务器上运行我的应用程序时,问题就开始了。WebRTC“ICE失败”,错误

每次我试图回答或拨打电话,视频开始播放了几秒钟,但与黑色的屏幕,然后我得到的ICE Failed错误和断开连接。

如果两个用户共享相同的IP地址,则不会发生这种情况。 如果用户共享相同的IP视频聊天工作正常,并没有任何问题。

这里有什么问题?

UPDATE

我加入眩晕并开启服务器同行,但我再次得到了同样的错误

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:'[email protected]' }, 
      { url: 'turn:numb.viagenie.ca', credential: 'muazkh', username:'[email protected]' }, 
      { 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)。
+0

谢谢你的回答。我增加了晕眩和转动服务器,但我得到同样的错误 –

+0

你确定这些TURN服务器真的有效吗?您不应该依赖免费/公共TURN服务.TURN必须路由媒体,如果许多用户正在使用它,成本会非常高昂,而且据我所知,没有人提供免费的此服务。 – Istvan

+0

事实上,它确实有一段时间后(我的服务器有问题)。我现在的问题是,它只是拨打电话或回答与WiFi而不是3g/4g,我也想弄清楚。谢谢你的帮助! –