Quanto è unico il socket.id?

Sto costruendo un’applicazione in cui mi piacerebbe un identificatore univoco per ogni connessione per la durata che l’app è in esecuzione e mi chiedo se socket.id funzioni per questo. Ad esempio, se l’utente 1 si disconnette dall’applicazione, l’utente 2 che si connette in un secondo momento non dovrebbe avere lo stesso socket.id che l’utente 1 aveva prima anche se l’utente 1 non è più connesso. Gli ID socket sono unici per tutto il tempo in cui socket.io sta ascoltando il server?

Supponendo che stai usando [email protected] (che è la versione attuale in NPM), il codice che genera un nuovo id per ogni connessione / client può essere trovato qui .

Penso che si possa tranquillamente supporre che ogni ID di socket sarà unico.

Guardando il codice di socket.io, sembra che l’id di un utente identifichi un client socket in modo univoco. Vedi, ad esempio, il codice per 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; }; 

Nell’ultima riga, l’id viene utilizzato in un hash che tiene traccia delle prese collegate. Dal momento che è necessario che i propri ID siano univoci, ogni ID è quindi univoco purché il server non sia stato riavviato