RTCPeerConnection在Google chrome webrtc-internals中未被清除



我在我的项目中使用webrtc。但是当RTCPeerConnection.iceConnectionState='closed'它没有从浏览器中删除时(谷歌浏览器67.0.3396.99( 。

我使用了RTCPeerConnection.close(),之后我将连接对象设置为null.但它仍然在chrome://webrtc-internals/中展示。问题是我的应用程序中可能有太多连接,因此当连接未清除时,我无法在一段时间后创建任何新连接。它在我的应用程序中显示太多连接错误。有人可以帮我解决问题吗?

谢谢

这是Chrome中一个长期存在的问题,我一直在跟踪这个问题。RTCPeerConnection没有及时收集垃圾。随着时间的推移,我注意到,尤其是在选项卡之间切换时,RTCPeerConnection最终都会被垃圾回收。

限制似乎是 500 个连接,因此请尝试限制您建立的连接数量。

以下是引用此错误的一些链接:

https://bugs.chromium.org/p/chromium/issues/detail?id=825576 https://bugs.chromium.org/p/chromium/issues/detail?id=429600

编辑:

一个黑客的解决方案可能是在iframe中创建连接。我记得删除 iframe 时连接是 GC'd 的。

嗯,我想这是一个功能,旨在让您事后检查您的连接。

当我关闭或重新加载具有连接的选项卡时,它们似乎立即被删除。可能与Eric Guan提到的iframe技巧起作用的原因相同。

对于webrtc,你应该使用websocket服务器,默认情况下浏览器只允许每个客户端的连接数量限制,这不是服务器限制,而是浏览器限制。

此外,您可能会看到RTCPeerConnection.iceConnectionState='closed'因为您需要构建一个信令服务器,或者WebRTC不会打开连接,WebSockets是构建信令服务器的非常有用的解决方案,请参阅示例

相关内容

  • 没有找到相关文章

最新更新