La proprietà socket Socket.io non è stata trovata nell’evento disconnect, node.js

Ho un piccolo ma fastidioso problema per il quale non riesco a trovare la soluzione.

Sul lato server ho questo:

... socket.on('join', function (name) { console.log("Joining: "+name); socket.userName = sanitize(name); } socket.on('msg', function(m) { console.log(socket.userName+" says: "+m);//This works }); socket.on('disconnect', function(socket) { console.log(socket.userName+" has disconnected");//This does not work }); ... 

Il problema è che il socket.userName è disponibile in tutti i miei metodi socket.on('disconnect',... per socket.on('disconnect',...

Ottengo undefined per la proprietà userName.


È semplicemente imansible farlo? Se questo non è il miglior pratcie, per favore fatemelo sapere. Sono molto nuovo a node.js

Non penso che l’evento di disconnect sia passato ad un argomento, quindi stai efficacemente clobbering la tua variabile socket . Basta usare un elenco di argomenti vuoto per il suo gestore:

 socket.on('disconnect', function() { console.log(socket.userName+" has disconnected"); });