WebRTC,错误有效/无效RTCPeerConnection限制

时间:2018-04-09 12:09:58

标签: google-chrome firefox webrtc limit

我今天遇到的问题非常烦人,因为单个网页上的WebRTC连接数量很多。 请参阅此简单测试,该测试是此答案的实验证明(https://stackoverflow.com/a/41205991/6126329)。

此代码将在Chrome上以256个连接失败,并将在Firefox上永久运行(测试所需的功能)。



var Peer = window.SimplePeer
var peer1, peer2
numberofconnection = 0

function connect() {
  peer1 = new Peer({ initiator: true })
  peer2 = new Peer()

  peer1.on('signal', function (data) {
    // when peer1 has signaling data, give it to peer2 somehow
    peer2.signal(data)
  })

  peer2.on('signal', function (data) {
    // when peer2 has signaling data, give it to peer1 somehow
    peer1.signal(data)
  })

  peer1.on('connect', function () {
    numberofconnection++
    console.log('connection number: ', numberofconnection)
    // wait for 'connect' event before using the data channel
    peer1.send('hey peer2, how is it going?')
  })

  peer2.on('data', function (data) {
    // got a data channel message
    console.log('got a message')
    destroy()
  })
}

function destroy() {
  let check = () => peer1 === null && peer2 ===null
  let done = () => { connect() }
  peer1.on('close', () => {
    peer1.removeAllListeners()
    peer1 = null
    if(check()) done()
  })
  peer2.on('close', () => {
    peer2.removeAllListeners()
    peer2 = null
    if(check()) done()
  })
  peer1.destroy()
  peer2.destroy()
}

connect()

<html>
  <body>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/simple-peer/9.0.0/simplepeer.min.js"></script>
  </body>
</html>
&#13;
&#13;
&#13;

目前,256是限制。但在我的测试中,我一次只有2个活动套接字!!

  • 转到chrome:// webrtc-internals /在Chrome中查看所有有效和 关闭连接并运行脚本。
  • 转到about:webrtc在Firefox中查看活动连接并运行 脚本,您将只看到2个活动连接。

现在是时候回答我的问题了:为什么Chrome会限制死连接的数量?报告是正常的还是错误的?因为如果这是想要的功能,则无法在Chrome中创建具有不断变化的拓扑的Webrtc网络。

修改:

为了更加精确,达到的错误是:&#34;未捕获的DOMException:无法构造&#39; RTCPeerConnection&#39;:无法创建如此多的PeerConnections&#34; 仅在只有2个活动连接的Chrome。现在想象一下,你有一个管理员可以在需要时重新创建连接,例如在DHT环境中,如果你让你的网页长时间打开就会出现这个错误。即使你完全关闭死连接。

0 个答案:

没有答案