socket.io 检测用户从哪个房间断开连接

问题描述 投票:0回答:3

我找到了一些解决方案,但它们似乎过时并且不起作用。

如何检测用户从哪个房间断开连接?

node.js socket.io
3个回答
3
投票

我不知道你所说的房间是什么意思,但如果它是一个聊天应用程序或类似的东西 您可以在首次连接时在套接字对象上创建一个变量,例如 roomID。

io.sockets.on("connection",function(socket){
    socket.on("new:user",function(userDATA){
        // create variable as roomID on socket.
        socket.roomID = userDATA.roomID
    }); 

    // other events 

    socket.on("disconnect",function(data){
        var roomID = socket.roomID;
        // do what you want to do
    }); 
});

0
投票

使用socket.io 1.0,您可以使用以下代码来完成此操作:

socket.on('disconnect', function() {
  console.log(socket.rooms);
});

它将输出用户加入的房间数组。

请注意,每个套接字都会自动加入一个以该套接字 ID 命名的房间。所以你可能会看到类似的东西

[ 'hIP6r4z8Ym1n5SQUAAAA', 'my_room_name' ]

在您的控制台中。


0
投票

在版本4及更高版本中,如果您连接到套接字socket io,则会自动创建一个唯一的socketId。 如果您有多个房间,则必须创建 abject 数组并保存房间及其用户(socktIds)。

如果断开您可以在该阵列中轻松找到的插座,那么您就可以找到房间。

© www.soinside.com 2019 - 2024. All rights reserved.