Socket.io: comment vider la pièce ?

Créé le 29 août 2017  ·  5Commentaires  ·  Source: socketio/socket.io

comme io.to("chat").clear() , tous les sockets de la salle "chat" partiront

Commentaire le plus utile

je vote pour ajouter. fonction room.kick() où vous pouvez transmettre un identifiant spécifique, un tableau ou 'ALL" pour supprimer tout le monde

Tous les 5 commentaires

Les salles
Vous pouvez faire ceci pour supprimer tous les clients d'une salle :

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

Pour compléter la réponse de @rllalloshi , dans une configuration multi-serveur, vous devez utiliser la méthode removeLeave de l'adaptateur :

io.of('/').in('chat').clients((error, socketIds) => {
  if (error) throw error;

  socketIds.forEach(socketId => io.of('/').adapter.remoteLeave(socketId, 'chat'));

});

Référence

Les salles
Vous pouvez faire ceci pour supprimer tous les clients d'une salle :

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

cela ne fonctionnait pas dans socket.io 2.2.0

Pourquoi n'y a-t-il pas d'appel simple pour supprimer toutes les prises d'une pièce ? C'est un cas d'utilisation très courant

je vote pour ajouter. fonction room.kick() où vous pouvez transmettre un identifiant spécifique, un tableau ou 'ALL" pour supprimer tout le monde

Cette page vous a été utile?
0 / 5 - 0 notes