为什么我的socket.io代码向连接的每个人发出消息,当我专门写socket.in(房间)......?

时间:2015-03-31 02:34:51

标签: javascript node.js socket.io webrtc p2p

我正在尝试设置一个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?他们不应该,我只是把它发送到一个特定的房间!

0 个答案:

没有答案