当我创建一个new RTCPeerConnection()时,据我所知,我无法用peer.close()销毁它,并且一段时间后,我用光了资源。网页创建大量RTCPeerConnection时,经过约600次尝试后它将停止工作,并在Chrome中引发以下错误:


  未捕获的DOMException:无法构造“ RTCPeerConnection”:无法创建这么多的PeerConnections


这是一个测试脚本,它将帮助您获取错误。仅是说明性的,即使对等体的创建速度慢得多,也会出现该问题:



var i = 1;

function peer() {
  var peer = new RTCPeerConnection();
  setTimeout(() => {
    peer.close();
    peer=null;
  }, 10);
  console.log(i++);
}

setInterval(peer, 20);
// run the script and wait on console to see the error





我希望它在调用peer.close()或至少将peer设置为null时释放所有资源,所以我看不出为什么浏览器会抛出这样的错误:PeerConnections太多。我做错了什么吗?如何正确销毁同伴?谢谢

最佳答案

尝试将peer设置为null,以便收集垃圾。请参见实施限制的人员的these notes。如果这不起作用,请在该邮件列表线程中询问

07-28 12:53