我今天遇到的问题非常烦人,因为单个网页上的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;
目前,256是限制。但在我的测试中,我一次只有2个活动套接字!!
现在是时候回答我的问题了:为什么Chrome会限制死连接的数量?报告是正常的还是错误的?因为如果这是想要的功能,则无法在Chrome中创建具有不断变化的拓扑的Webrtc网络。
修改:
为了更加精确,达到的错误是:&#34;未捕获的DOMException:无法构造&#39; RTCPeerConnection&#39;:无法创建如此多的PeerConnections&#34; 仅在只有2个活动连接的Chrome。现在想象一下,你有一个管理员可以在需要时重新创建连接,例如在DHT环境中,如果你让你的网页长时间打开就会出现这个错误。即使你完全关闭死连接。