2014-01-07 17 views
6

Ich baue eine Anwendung, wo ich eine eindeutige Kennung für jede Verbindung für die Dauer der App möchte, und ich frage mich, ob socket.id dafür funktioniert. Z.B. Wenn Benutzer 1 die Verbindung zur Anwendung trennt, sollte Benutzer 2, der später eine Verbindung herstellt, nicht dieselbe Socket.id haben, die Benutzer 1 zuvor hatte, obwohl Benutzer 1 nicht mehr verbunden ist. Sind die Socket-IDs für die gesamte Zeit eindeutig? Socket.io hört auf den Server?Wie einzigartig ist socket.id?

Antwort

4

Angenommen, Sie verwenden [email protected] (die aktuelle Version in NPM), der Code, der eine neue generiert ID für jede Verbindung/Client can be found here.

Ich denke, dass Sie sicher davon ausgehen können, dass jede Socket-ID eindeutig sein wird.

2

Mit Blick auf den Code von socket.io scheint die ID eines Benutzers einen Socket-Client eindeutig zu identifizieren. Siehe zum Beispiel den Code für Socket.connect:

Socket.prototype.onconnect = function(){ 
    debug('socket connected - writing packet'); 
    this.join(this.id); 
    this.packet({ type: parser.CONNECT }); 
    this.nsp.connected[this.id] = this; 
}; 

In der letzten Zeile wird die ID in einer Hash verwendet, die Spur der angeschlossenen Steckdosen hält. Da Ihre IDs eindeutig sein müssen, ist jede ID eindeutig, solange der Server nicht neu gestartet wurde.

+1

Aber das zeigt nicht, dass IDs nicht recycelt werden, was das OP wissen will. – robertklep