как io.to ("chat"). clear (), все сокеты в комнате "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
Чтобы завершить ответ @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 (), где вы можете передать определенный идентификатор, массив или "ВСЕ" для удаления всех
Самый полезный комментарий
голосую за добавление. room.kick (), где вы можете передать определенный идентификатор, массив или "ВСЕ" для удаления всех