套接字io获取断开连接的套接字的ID

我使用socket.io> 1.0编码聊天室

在我的聊天室应用程序中,我尝试了解谁刚断开连接。 要做到这一点,我需要访问套接字的ID。 断开事件被触发后,

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

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

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

非常感谢

尝试这个:

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

让我知道这是否有效。

编辑1:从根本上说,你所做的是错误的,逻辑上。 与某个连接关联的callback函数在连接之后被执行,因此丢失,或者在事件循环中被解引用。

我的答案会保持你的callback在事件循环中引用,如果再次引用该连接,你将能够确定哪个线程或连接调用了该方法。