WebRTC "ICE Failed" ,错误

WebRTC "ICE Failed" , error

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

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

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

这可能是什么问题?

更新

我添加了 stun 和 turn server on peer 但我再次遇到同样的错误

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' }
        ]}});
  • 您需要设置一个有效的 STUN 服务器(可能 peer.js 默认值不起作用)。这将解决大约 80% 的问题。
  • 在某些情况下,还需要 TURN 服务才能完成调用。
  • 在某些情况下,即使 TURN 也不够(例如,如果两端都阻止了 UDP),在这些情况下,您需要一个服务器来路由媒体(通过 TCP/TURN)。