wie io.to("chat").clear() , werden alle Sockets im Raum "chat" verlassen
@wendux- Räume werden automatisch erstellt und gelöscht. Das heißt, wenn der Raum leer ist, sich keine Clients mehr darauf befinden, wird er gelöscht.
Sie können dies tun, um alle Clients aus einem Raum zu entfernen:
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
Um die Antwort von @rllalloshi zu vervollständigen, sollten Sie in einer Multi-Server-Konfiguration die Methode removeLeave
des Adapters verwenden:
io.of('/').in('chat').clients((error, socketIds) => {
if (error) throw error;
socketIds.forEach(socketId => io.of('/').adapter.remoteLeave(socketId, 'chat'));
});
@wendux- Räume werden automatisch erstellt und gelöscht. Das heißt, wenn der Raum leer ist, sich keine Clients mehr darauf befinden, wird er gelöscht.
Sie können dies tun, um alle Clients aus einem Raum zu entfernen: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
es funktionierte nicht in socket.io 2.2.0
Warum gibt es keinen einfachen Aufruf, alle Steckdosen aus einem Raum zu entfernen? Es ist ein sehr häufiger Anwendungsfall
Ich stimme zu hinzufügen. room.kick() Funktion, mit der Sie eine bestimmte ID, ein Array oder "ALL" übergeben können, um alle zu entfernen
Hilfreichster Kommentar
Ich stimme zu hinzufügen. room.kick() Funktion, mit der Sie eine bestimmte ID, ein Array oder "ALL" übergeben können, um alle zu entfernen