Socket.io: wie räume ich den raum auf?

Erstellt am 29. Aug. 2017  ·  5Kommentare  ·  Quelle: socketio/socket.io

wie io.to("chat").clear() , werden alle Sockets im Raum "chat" verlassen

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

Alle 5 Kommentare

@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'));

});

Referenz

@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

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen