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

tah*_*sin 5 sockets session-variables node.js

我使用 socket.io >1.0 编写了一个聊天室

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

      socket.on('disconnect', function(socket){
          //need to learn socket's id here
      }
Run Code Online (Sandbox Code Playgroud)

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

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

多谢

小智 6

尝试这个:

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

让我知道这是否有效。

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

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