📅  最后修改于: 2023-12-03 15:07:49.319000             🧑  作者: Mango
在使用 socket.io 进行实时通信时,我们经常需要将套接字(socket)添加到一个房间(room)中。这样,我们就可以向该房间中的所有套接字发送消息,而不必逐个发送。
要将套接字添加到房间,我们可以使用 join
方法:
socket.join('roomName');
这会将 socket
对象添加到名为 roomName
的房间中。如果该房间不存在,则会自动创建。
要将套接字从房间中移除,我们可以使用 leave
方法:
socket.leave('roomName');
这会将 socket
对象从名为 roomName
的房间中移除。如果该套接字不在该房间中,则不会有任何效果。
要获取名为 roomName
的房间中的所有套接字,我们可以使用 sockets
属性:
const sockets = io.of('/').in('roomName').sockets;
这会返回一个所有套接字的对象。我们可以使用 Object.keys
方法获取套接字 ID 的数组:
const socketIds = Object.keys(sockets);
现在,我们就可以向这些套接字发送消息了:
socketIds.forEach(socketId => {
io.to(socketId).emit('message', 'Hello, everyone!');
});
在 socket.io 中,将套接字添加到房间是一项非常有用的功能。通过使用房间,我们可以轻松地向多个套接字发送消息,而不必逐个发送。