Socket.io Client durch ID trennen

Ich bin neu bei nodejs und versuche, einen Chatroom zu schreiben, wie es so viele Leute haben. Der Chat besteht aus mehreren Räumen und Clients. Befehle wie/nick /join /help /ls users /ls rooms arbeiten, wie Sie es erwarten würden, obwohl ich Probleme habe, eine zu bekommen/kick befehl zu arbeiten.

Ich bin nur nicht sicher, wie Sie einen Client durch ID trennen, so weit/kick client ist in der Lage, die entsprechenden Clients socket.id zu präsentieren, obwohl ich nicht sicher bin, ob der Code über socket.id gekickt werden kann.

Code bisher:

Trennen Sie den sendenden Client/kick: socket.disconnect();

Löschen client von arg/kick client: delete io.sockets.sockets[client];

Das Löschen des Clients trennt sie jedoch nicht, sie können weiterhin Daten empfangen, ohne sie zu senden.

Gelöst

CuriousGuy's 0.9 hat für Interessierte einwandfrei funktioniert - hier ist der Code, den ich verwende.

Serverseite:

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.'});
    }
  });
}

Client Seite:

kickClient = function(client) {
  this.socket.emit('kick', client);
};

Antworten auf die Frage(1)

Ihre Antwort auf die Frage