2016-04-01 25 views
1

ich bestimmte Spieler zu bestimmten Raum wie eine Verbindung herstellen können:trennen Client von socket.io id

socket.join('sampleroom'); 

Und Dokumentation sagt, dass ‚Sie verlassen Methode Raum verlassen können‘ wie:

socket.leave('sampleroom'); 

Aber ich möchte nur, dass jeder Client das io-Objekt anstelle des Sockets benutzt. Ich brauche so etwas wie:

io.sockets(specificSocketID).leave('sampleroom'); 

Gibt es eine Möglichkeit Client von Raum zu verlassen, mit nur Socket-ID mit io-Objekt?

Antwort

0

Wie @tresdin erwähnt, können wir Socket-IDs speichern, jedoch io Objekt auch so gespeichert ist, tatsächlich wir es nicht brauchen. Wir können spezifische Socket-ID wie

io.sockets.sockets[specificSocketID].leave('sampleroom'); 
verwenden
1

Sie können die eingehenden Sockets in Ihrem eigenen Objekt speichern.

var sockets = {}; 
io.on('connection',function(socket){ 
    sockets[specificSocketID] = socket; 
    io.on('disconnect',function(){ 
     delete sockets[specificSocketID]; 
    }); 
}); 
//then you can easily call a specific socket with its id 
sockets[specificSocketID].join('sampleRoom'); 
sockets[specificSocketID].leave('sampleRoom'); 
Verwandte Themen