如何在socket 1.4中获取套接字室名称?

时间:2016-10-03 16:41:00

标签: node.js socket.io

我正在寻找方法或命令行来获取套接字室名称(如果可能)。任何想法或提示都非常感谢!例如,如果房间的名称是' roomName',我希望得到这个值,ty!

1 个答案:

答案 0 :(得分:1)

socket.io套接字可以在多个房间中。实际上,当套接字第一次连接时,它会自动放入一个与socket.id值相同的房间。

如果您要尝试的是获取连接服务器端的套接字所在的所有房间的列表,则可以使用socket.rooms。这是一个列出套接字所在房间的对象。如果你只想要一个套接字所在的房间名称数组,你可以使用它:

let rooms = Object.keys(socket.rooms);

如果您想要消除与socket.id匹配的自动生成的空间,您可以这样做:

let rooms = Object.keys(socket.rooms).filter(function(item) {
    return item !== socket.id;
});

如果您尝试从客户端获取此信息,则无法从客户端套接字获取此信息。您将不得不询问服务器该客户所在的房间,或者您必须拥有一个系统,其中客户端被告知其所放置的房间并且它跟踪该数据。 socket.io客户端不知道它在哪个房间。

在socket.io中要注意另外一件事。我在加入会议室时看到了一些异步行为,这意味着如果您socket.join("someRoom")然后立即查询socket.rooms,则新会议室可能还没有。如果您在下一个勾选中查询socket.rooms,它将在那里。我不确定这种情况是否会发生,或者只是在某些情况下发生。