2013-07-15 3 views
1

Je travaille sur un script où la logique indique que si la personne qui a créé une pièce via la méthode socket.io « créer de la pièce », quelque chose le long des lignes de:Comment forcer plusieurs clients à quitter dans socket.io?

client.on("createRoom", function (name) { 
    client.room = name; 
    client.join(client.room); 
    client.emit("update", "Welcome to room:" + name + "."); 
}); 

Plusieurs personnes peuvent se joindre la même pièce par une autre méthode. Ma question est, comment mettre en œuvre une solution où - si le propriétaire de la salle (un ID unique produit par socket.io est stocké dans mon script et a noté que le « propriétaire ») se déconnecte du serveur, tous les autres clients connectés qui appartiennent à la même pièce déconnecter également? Je sais que je dois utiliser la méthode client.leave() mais je ne sais pas comment l'appliquer à plusieurs clients.

Répondre

0

Stocker les clients dans un tableau, comme des objets. Stockez le numéro de chambre et s'ils possèdent la chambre dans les propriétés. En cas de déconnexion, vérifiez la propriété ownsroom de l'utilisateur en question, et si oui, boucle à travers le réseau de recherche pour d'autres clients où la roomid propriété correspond à celle des propriétaires sectionneurs. Lorsque l'instruction if pour clients[i].roomid == disconnected.roomid est vrai, appelez la fonction de l'autorisation d'abandonner la connexion.

var i = 0; 
while(i < clients.length){ 
    if(clients[i].room == disconnected.room) 
     clients[i].leave(); 
    ++i; 
} 
+0

Merci. Par «numéro de pièce», voulez-vous dire l'ID de la pièce? aussi, dites-vous de faire des clients [i] .leave()? Je ne suis pas sûr si je suis la dernière partie de votre explication. – Tamas

+0

J'ai ajouté un pseudo-code – bobbybee

+0

ouais, j'essaye de retravailler ceci à mes besoins. J'ai un objet people qui contient tous les clients connectés et si une personne possède une pièce ou est dans une pièce et elle est clavée sur le client. ID: people [client.id] = {"name": name, "owns": ownerRoomID, "inroom": inRoomID}; – Tamas

Questions connexes