Javascript WebRTC RTPeerConnection有时无法连接

Javascript WebRTC RTPeerConnection有时无法连接,javascript,networking,webrtc,Javascript,Networking,Webrtc,我已经尝试了所有的webrtc演示。没有人能每次都联系上。这只是一个本地主机连接。我不认为这是我的错。我有一个朋友也试过了,通常都能用,但是如果你试的次数足够多,最终它会无法连接 问题是pc.connectionState==失败 webrtc实际上是否无法一致连接?怎么没人抱怨这个 这是我试过的最好的演示之一。 源代码在这里 我向你挑战,让你试试看。连接到你自己。关闭两个选项卡,然后重试约10次。它应该卡在连接上了。有没有办法解决这个问题?几个星期以来,我一直在修改所有演示的代码,但无法使任何

我已经尝试了所有的webrtc演示。没有人能每次都联系上。这只是一个本地主机连接。我不认为这是我的错。我有一个朋友也试过了,通常都能用,但是如果你试的次数足够多,最终它会无法连接

问题是pc.connectionState==失败

webrtc实际上是否无法一致连接?怎么没人抱怨这个

这是我试过的最好的演示之一。 源代码在这里

我向你挑战,让你试试看。连接到你自己。关闭两个选项卡,然后重试约10次。它应该卡在连接上了。有没有办法解决这个问题?几个星期以来,我一直在修改所有演示的代码,但无法使任何东西牢固地连接起来

我发现的唯一修复方法是,在pc.remoteDescription.type存在之前调用pc.addIceCandidate有时是一个竞争条件问题,修复似乎有帮助,但连接仍然会卡住

我尝试了最新的chrome和firefox。我敢肯定,当我3年前第一次尝试webrtc时,它的连接率是100%


如果您有任何webrtc代码可以每次连接,请将其作为答案发布,谢谢

即使在本地主机上使用,您也需要ICEServer。这是因为,您正在使用数据通道。当ice服务器无法建立连接时,它可能会失败。这也可能是由于过程中发生了碰撞。在这种情况下,您可以尝试与同行重新协商:

InOnConnectionStateChange事件:用于提供冲突

if (pc.connectionState === 'failed') {
  pc.restartIce()
}
在oniceconnectionstatechange事件中:对于ice服务器

if (pc.iceconnectionState === 'failed') {
  pc.restartIce()
}

这将允许对等方通过协商:onnegotiationneeded事件重试连接。

即使在本地主机上使用它,您也需要ICeServer。这是因为,您正在使用数据通道。当ice服务器无法建立连接时,它可能会失败。这也可能是由于过程中发生了碰撞。在这种情况下,您可以尝试与同行重新协商:

InOnConnectionStateChange事件:用于提供冲突

if (pc.connectionState === 'failed') {
  pc.restartIce()
}
在oniceconnectionstatechange事件中:对于ice服务器

if (pc.iceconnectionState === 'failed') {
  pc.restartIce()
}

这将允许对等方通过协商重试连接:onGotiationNeeded事件。

难以置信!奇怪的是,我从来没有单独碰到过这件事。它似乎起作用了!但有一个问题是,有没有办法缩短超时时间?它在重新启动前会挂起10秒钟这是因为你正在重新连接。你可以展示一些旋转器。难以置信!奇怪的是,我从来没有单独碰到过这件事。它似乎起作用了!但有一个问题是,有没有办法缩短超时时间?它在重新启动前会挂起10秒钟这是因为你正在重新连接。你可以展示一些旋转器。