0

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

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

谢谢

4

3 回答 3

3

这是我一直在跟踪的 Chrome 中长期存在的问题。RTCPeerConnection不要及时收集垃圾。随着时间的推移,我注意到,尤其是在标签之间切换时,RTCPeerConnection最终会被垃圾收集。

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

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

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

编辑:

一个 hacky 解决方案可能是在 iframe 中创建连接。我记得当 iframe 被删除时,连接是 GC 的。

于 2019-08-17T23:55:33.213 回答
0

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

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

于 2020-10-07T13:11:32.097 回答
-2

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

您也可能会看到,RTCPeerConnection.iceConnectionState='closed'因为您需要构建信令服务器,否则 webrtc 不会打开连接,websockets 是构建信令服务器的一个非常常用的解决方案,请参阅示例

于 2019-08-16T12:48:36.510 回答