一次加入多个房间 Socket.io

Posted

技术标签:

【中文标题】一次加入多个房间 Socket.io【英文标题】:Join multiple rooms at once Socket.io 【发布时间】:2020-10-28 21:27:13 【问题描述】:

我有一个应用程序,用户可以在其中获取他们所在的聊天室列表,然后他们可以点击进入他们想要的任何特定聊天室。当前,当用户单击特定房间时,套接字会加入房间,而当用户返回聊天室的主列表时,套接字会离开房间。这意味着当用户在聊天列表页面上时,他们的套接字不在任何房间(连接事件创建的默认房间除外),因此在此页面上不会实时向他们推送新消息。

我计划当用户加载聊天列表页面时,他们会加入所有房间。

我可以看到你可以像这样向多个房间发射:

io.to('room1').to('room2').to('room3').emit('some event');

有没有办法在socket中同时加入多个房间?

socket.join('room1').join('room2').join('room3')? 要么 socket.join('room1', 'room2', 'room3')

或者我最好做这样的事情:

rooms = ['room1', 'room2', 'room3'];

rooms.forEach(room => 
   socket.join(room)
);

【问题讨论】:

【参考方案1】:

是的,只需将数组放入join函数即可:

rooms = ['room1', 'room2', 'room3'];
socket.join(rooms);

文档:https://socket.io/docs/server-api/#socket-join-rooms-callback

【讨论】:

以上是关于一次加入多个房间 Socket.io的主要内容,如果未能解决你的问题,请参考以下文章

玩家可以加入多个房间吗?双关语

Socket.io socket.broadcast.to 不工作

Socket.io socket.off() 没有按预期工作

如何让用户加入他们的多个房间 socket.io

当用户加入房间时,如何将没有隶属关系的用户直接设置为成员 - Ejabberd

多次加入同一个房间和一个房间的客户