我有一个应用程序,用户可以得到一个聊天室的列表,他们可以然后点击进入任何特定的聊天室,他们想要。 当前,当用户点击进入特定房间时,套接字加入该房间,当用户返回聊天室主列表时,套接字离开该房间。 这意味着当用户在聊天列表页面上时,他们的套接字不在任何房间中(禁止连接事件创建的默认房间),因此当用户在此页面上时,新消息不会实时推送给他们。
我计划当用户加载聊天列表页面时,他们在那个点加入所有房间。
我可以看到你可以像这样向多个房间发射:
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)
});
是的,只需将数组放入join函数即可:
rooms = ['room1', 'room2', 'room3'];
socket.join(rooms);
文档:https://socket.io/docs/server-api/#socket-join-rooms-callback