【问题标题】:webRTC is not reconnecting after internet dropout on Chrome mobile在 Chrome 移动设备上断开互联网后,webRTC 未重新连接
【发布时间】:2022-01-06 01:27:43
【问题描述】:

我有一个 webRTC 视频,它在 PC 上的 Chrome 和移动设备上的 Chrome 之间按预期工作,但如果移动设备上的互联网连接中断,它不会在重新联机时恢复 webRTC 视频,但是如果它会正确恢复互联网中断的是 PC 上的 Chrome。

无论设备或浏览器如何,它都使用相同的实现,并且 chrome 移动似乎支持与桌面相同的 webRTC (https://caniuse.com/?search=webrtc),为什么它在移动 chrome 上可能会失败?

我有下面的“oniceconnectionstatechange”功能:

 pc.oniceconnectionstatechange = event => {
     if (pc.iceConnectionState === 'failed') {
       pc.restartIce()
     }
  }

【问题讨论】:

  • 在开发原生 webrtc 应用程序时遇到过这种情况,主要是在移动网络和 wifi 网络之间切换时发生(如果 wifi 掉线会自动发生)。在这种情况下,我正在完全重新协商对等方以便能够重新启动媒体。我想这种情况下通告 ip 改变和重启是不能生效的。

标签: google-chrome webrtc mobile-chrome


【解决方案1】:

我认为由于您的NAT Mappings,您会看到不同的行为。可能是别的东西,但根据我们掌握的细节,这是我的第一个猜测。

当桌面上的连接中断(然后返回)时,您将保留 NAT 映射。当移动设备上的连接中断时,您可能会得到一个新的。您可以通过从手机发送 UDP 数据包并在全球可路由服务器上打印 src 详细信息来自己确认该行为。

重新连接对等点的正确方法是执行ICE Restart。这样可以确保即使您的网络路径发生更改,您也会重新连接。

【讨论】:

  • 我的oniceconnectionstatechange函数中已经有restartIce()(有问题已更新)是不是设置不正确?
  • 我不确定。你能分享一些代码吗?您是否交换了所有 ICE 候选人并从远程对等方做出另一个答案?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
相关资源
最近更新 更多