Node.js 如何在插座1.4中获取插座室名称?

Node.js 如何在插座1.4中获取插座室名称?,node.js,socket.io,Node.js,Socket.io,如果可能的话,我正在寻找一个方法或命令行来获取套接字室的名称。非常感谢您的任何想法或建议!例如,如果房间的名称是“roomName”,我希望得到这个值,ty 一个socket.io套接字可以在多个房间中。事实上,当套接字首次连接时,它会自动放置到与socket.id值同名的房间中 如果您试图在连接的服务器端获取套接字所在的所有文件室的列表,则可以使用socket.rooms。该对象列出了插座所在的所有房间。如果只需要插座所在的房间名称数组,可以使用以下方法: let rooms = Object

如果可能的话,我正在寻找一个方法或命令行来获取套接字室的名称。非常感谢您的任何想法或建议!例如,如果房间的名称是“roomName”,我希望得到这个值,ty

一个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
,它将在那里。我不确定这是否总是发生,或者只是在某些情况下发生。

你说的“获取插座室名称”是什么意思?插座可以位于多个房间中,事实上,默认情况下,每个插座都放在一个房间中,而您添加到的其他房间将是另外一个房间。您是否正在尝试获取给定套接字所在房间的列表?如果您使用socket.join(roomName),房间将获得一个值,我将尝试获取房间的名称,即roomName。。