WebRTC“ICE失败”,错误

时间:2016-05-25 13:19:39

标签: webrtc peerjs ice-protocol

所以,我正在尝试使用webrtc video chat构建一个peer.js网络应用。到目前为止一切顺利,一切似乎都正常。 当我在私人服务器上运行我的应用程序时,问题就出现了。

每当我尝试接听或拨打电话时,视频开始播放几秒钟,但是黑屏,然后我收到ICE Failed错误并且断开连接。

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

这可能是什么问题?

更新

我添加了stun并在同行上转了服务器,但我再次遇到同样的错误

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:'webrtc@live.com' },
            { url: 'turn:numb.viagenie.ca', credential: 'muazkh', username:'webrtc@live.com' },
            { 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 个答案:

答案 0 :(得分:2)

  • 您需要设置一个有效的STUN服务器(可能是peer.js默认设置不起作用)。这将解决大约80%的案件中的问题。
  • 在某些情况下,还需要TURN服务才能完成通话。
  • 在某些情况下甚至TURN还不够(例如,如果UDP被阻止两端),在这种情况下,您需要一台服务器来路由媒体(通过TCP / TURN)。