像 io.to("chat").clear() ,房间“chat”中的所有socket都会离开
@wendux房间是自动创建和删除的。 这意味着当房间是空的时,没有更多的客户留在上面,它将被删除。
您可以这样做以从房间中删除所有客户端:
io.of('/').in('chat').clients((error, socketIds) => {
if (error) throw error;
socketIds.forEach(socketId => io.sockets.sockets[socketId].leave('chat'));
});
https://socket.io/docs/server-api/#namespace -clients-callback
要完成@rllalloshi的回答,在多服务器配置中,您应该使用适配器的removeLeave
方法:
io.of('/').in('chat').clients((error, socketIds) => {
if (error) throw error;
socketIds.forEach(socketId => io.of('/').adapter.remoteLeave(socketId, 'chat'));
});
@wendux房间是自动创建和删除的。 这意味着当房间是空的时,没有更多的客户留在上面,它将被删除。
您可以这样做以从房间中删除所有客户端:io.of('/').in('chat').clients((error, socketIds) => { if (error) throw error; socketIds.forEach(socketId => io.sockets.sockets[socketId].leave('chat')); });
https://socket.io/docs/server-api/#namespace -clients-callback
它在 socket.io 2.2.0 中不起作用
为什么没有简单的调用从房间中删除所有套接字? 这是一个非常常见的用例
我投票添加。 room.kick() 函数,您可以在其中传入特定的 id、数组或“ALL”以删除所有人
最有用的评论
我投票添加。 room.kick() 函数,您可以在其中传入特定的 id、数组或“ALL”以删除所有人