2016-10-03 68 views
1

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

+0

你是什么意思“获取套房名称”?套接字可以在许多房间中,实际上,每个套接字默认放置在一个房间中,而其他房间则添加到其中。你试图获得给定套接字所在房间的列表吗? – jfriend00

+0

如果你做socket.join(roomName),房间得到一个值,我试图得到房间的名称是roomName .. – alex1997

回答

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

+0

谢谢,这很好! – alex1997

相关问题