Socket.io débranchez client par id
Je suis nouveau sur nodejs et d'essayer d'écrire une salle de chat, comme beaucoup de gens l'ont.
Le chat se compose de plusieurs chambres et les clients. Des commandes telles que /nick
/join
/help
/ls users
/ls rooms
travail comme vous vous en doutiez bien que je vais avoir de la difficulté à obtenir un /kick
commande fonctionne.
Je ne suis pas sûr de savoir comment vous déconnecter un client par id, jusqu'à présent /kick client
est en mesure de présenter les clients respectifs socket.id bien que je suis coincé pour le code pour le coup via socket.id.
Code de la mesure:
Débranchez client qui a envoyé /kick
: socket.disconnect();
Supprimer client à partir de l'arg /kick client
: delete io.sockets.sockets[client];
De supprimer le client de ne pas déconnecter les cependant, ils peuvent toujours recevoir des données tout simplement pas l'envoyer.
Résolu
CuriousGuy 0,9 a fonctionné parfaitement, pour ceux qui sont intéressés, voici le code que j'utilise.
Côté serveur:
handleClientKick(socket);
...
function handleClientKick(socket) {
socket.on('kick', function(client) {
if (typeof io.sockets.sockets[client] != 'undefined') {
socket.emit('message', {text: nickNames[socket.id] + ' kicked: ' + nickNames[client]});
io.sockets.sockets[client].disconnect();
} else {
socket.emit('message', {text: 'User: ' + name + ' does not exist.'});
}
});
}
Côté Client:
kickClient = function(client) {
this.socket.emit('kick', client);
};
OriginalL'auteur rwxes | 2014-06-28
Vous devez vous connecter pour publier un commentaire.
Le code suivant fonctionne avec la Prise.IO 1.0, cependant je ne suis pas sûr que ce soit la meilleure solution:
Mise à jour:
Avec La Prise.IO 0.9 le code serait légèrement différent:
console.log(io.sockets.connected[socket.id])
une idée?Cela signifie que soit cette prise est débranchée déjà, ou
socket.id
valeur n'est pas valide. Qu'obtenez-vous si vous exécutezconsole.log(socket.id);
?J'ai testé ma solution avec la Prise.IO 1.0
socket.id
fonctionne comme prévu de retournerBGGkTQOOBJTcO2YukQLl
etc.. - viens de vérifier et je suis en utilisant 0.9.16, je vais essayer avec la 1.0en cours d'exécution dans toutes sortes d'autres erreurs qui tentent de ma pré-1.0 code en cours d'exécution sur 1.0 (sorte de attend à ce que). Je trouve ça étrange combien il est difficile pour moi de déconnecter un client par les clients
socket.id
pourtant si simple, en général, pour l'installation de prises de courant.io.OriginalL'auteur Oleg