comme io.to("chat").clear() , tous les sockets de la salle "chat" partiront
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'));
});
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
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