socket io获取断开连接的套接字的id

时间:2015-06-11 11:48:33

标签: node.js sockets session-variables

我使用socket.io> 1.0

对聊天室进行编码

在我的聊天室应用程序中,我试着了解谁刚刚断开连接。为此,我需要访问socket的id。 触发断开连接事件后,

      socket.on('disconnect', function(socket){
          //need to learn socket's id here
      }

我无法检查刚离开的人。我试过socket.id但是这给了一个错误。我认为套接字对象已删除,因为我无法访问它的任何部分。

我不希望存储所有套接字ID并在剩下一个时循环遍历所有套接字ID。 然后我尝试使用会话中间件在会话中保存套接字的id,但是他们将数据附加到套接字对象,因此使用它是没有意义的(所有数据在断开连接时都消失了)或者他们使用REST调用但我没有收到任何REST调用当某人(插座)离开聊天室时。

非常感谢

1 个答案:

答案 0 :(得分:2)

试试这个:

io.sockets.on('connection', function(socket){
          console.log("Connected Socket = " + socket.id)
          socket.on('disconnect', function(){
                 console.log("Disconnected Socket = " + socket.id);
          }
 } 

如果有效,请告诉我。

EDIT1:从逻辑上讲,基本上你所做的事情是错误的。与连接关联的回调函数在某人连接后执行,因此在事件循环中丢失或解除引用。

我的回答将在事件循环中引用您的回调,如果再次引用该连接,您就能够识别调用该方法的线程或连接。