我怎样才能在套接字1.4中获取套房名称?

我正在寻找一个方法或命令行来获得套房的名字,如果可能的话。 任何想法或提示,高度赞赏! 例如,如果房间的名称是“roomName”,我希望得到这个值,ty!

一个socket.iosockets可以在多个房间里。 实际上,当套接字第一次连接时,它会自动放置在与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中另外要小心一点。 我在join房间时看到了一些asynchronous行为,这意味着如果你使用socket.join("someRoom") ,然后立即查询socket.rooms ,那么新的房间可能还没有socket.rooms 。 如果在下一个勾号处查询socket.rooms ,它将在那里。 我不确定这是否总是发生,或只是在某些情况下发生。