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

socket io get id of the disconnected socket

我使用 socket.io >1.0

编写聊天室代码

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

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

我无法查看刚刚离开的人。我尝试了 socket.id 但出现了错误。我认为套接字对象已被删除,因为我无法访问它的任何部分。

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

非常感谢

试试这个:

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

如果可行,请告诉我。

EDIT1: 从本质上讲,您所做的在逻辑上是错误的。与连接关联的回调函数在有人连接后执行,因此丢失,或者在事件循环中取消引用。

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