javascript - 一次加入多个房间 Socket.io
问题描述
我有一个应用程序,用户可以在其中获取他们所在的聊天室列表,然后他们可以点击进入他们想要的任何特定聊天室。当前,当用户单击特定房间时,套接字会加入房间,而当用户返回聊天室的主列表时,套接字会离开房间。这意味着当用户在聊天列表页面上时,他们的套接字不在任何房间(连接事件创建的默认房间除外),因此在此页面上不会实时向他们推送新消息。
我计划当用户加载聊天列表页面时,他们会加入所有房间。
我可以看到你可以像这样向多个房间发射:
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
推荐阅读
- html - Pure CSS Hamburger 菜单在消失前调整视口大小时显示
- google-analytics - BigQuery + Google Analytics:计算 SKU 购买的数量。UNNEST 不工作
- typescript - 绑定到函数的 Typescript 泛型类型与绑定到泛型函数的类型
- javascript - 是否可以在不使用反应的情况下将 chrome 扩展弹出窗口注入当前网页?
- python - fctables.com 中的网页抓取
- c++ - 使Windows32 API成员扩展为A,或在vs2019中更改字符集(c++)
- android - OutlineTextField , TextField 在 Jetpack Compose 1.0.0-alpha02 中不起作用
- node.js - error connecting mongodb to nodeapp but works fine on index page
- laravel - 如何通过 Laravel 中的第一个模型从第二个模型中获取搜索数据?
- firebase - firebase实时数据库需要很长时间才能加载数据