我正在尝试设置一个webrtc应用。目前,它在点击连接时连接两个人。但是,如果我打开多个连接,然后当第一个连接中的一个人点击断开连接时,它实际上会断开所有连接的人。我用3个连接尝试了这个,并且断开了第2个连接,这只会使第3个连接断开,而第一个连接仍然连接。 所以基本上,这是一个螺旋式下降。如果连接断开连接,则在一个连接也断开连接后创建所有连接。但是在该连接之前的所有连接仍然是活动的。
我认为它与socket.io代码有关,因为在console.log中我收到来自socket.io的消息,因为完全不同的连接中的某个人断开连接。服务器代码:
socket.on("sessiondesc", function(sessiondesc)
{
if (sessiondesc == true || sessiondesc.type === 'answer')
{
//the random room is generated before the socket.on sessiondesc thing.
socket.join(room)
}
socket.in(room).emit("sessiondesc", sessiondesc);
});
socket.on("quit", function(quit)
{
socket.leave(room)
});
这是客户端代码:
socket.on("sessiondesc", function(sessiondesc)
{
//stuff I do here with webrtc... like create offer, answer, and such.
else if (sessiondesc == false)
{
pc.close();
pc = null;
console.log("GOT THE FALSE SESSION DESC! GOT IT");
quit = true;
socket.emit("quit", quit);
}
document.getElementById("disconnect").addEventListener("click", function(e)
{
console.log("The person clicked disconnect!");
quit = true;
sessiondesc = false;
socket.emit("sessiondesc", sessiondesc);
socket.emit("quit", quit);
pc.close();
pc = null;
});
所以基本上在断开连接的所有其他连接上,我可以看到console.log(“GOT THE SESSION DESC”)的事情......而我想,为什么这些其他房间会得到这个sessiondesc?他们不应该,我只是把它发送到一个特定的房间!