Javascript (Socket.io)-为什么套接字对象在断开连接事件时丢失自定义属性?

Javascript (Socket.io)-为什么套接字对象在断开连接事件时丢失自定义属性?,javascript,node.js,websocket,socket.io,Javascript,Node.js,Websocket,Socket.io,在每个新套接字对象(新连接)上,我将自定义属性设置为套接字对象,如下所示: io.on('connection', function(socket){ socket.username = "some-custom-username"; console.log(socket.id); //Output : unique ID from socket object console.log(socket.username); //Output : some-cus

在每个新套接字对象(新连接)上,我将自定义属性设置为套接字对象,如下所示:

io.on('connection', function(socket){
   socket.username = "some-custom-username";
   console.log(socket.id); //Output : unique ID from socket object
   console.log(socket.username); //Output : some-custom-username


   socket.on('disconnect',function(reason){
      console.log(socket.id); //Output : Same unique ID like earlier
      console.log(socket.username); //Output : undefined
   });


}
有人能解释为什么会发生这种情况吗?

它是同一个对象,id属性保持不变,但在断开连接事件中每个自定义属性都会被删除,因此我无法轻松检测哪个用户断开了连接