在disconnect事件node.js中找不到Socket.io套接字属性

时间:2013-04-09 18:52:48

标签: node.js socket.io

我有一个小但烦人的问题,我无法找到解决方案。

在服务器端,我有这个:

...
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  
});
...

问题在于,socket.userName } .on方法 exept 可用于socket.on('disconnect',...

我获得了userName属性的undefined


这根本不可能吗?如果这不是最好的pratcie,请告诉我。我是node.js的新手

1 个答案:

答案 0 :(得分:1)

我不认为disconnect事件是通过参数传递的,所以你有效地破坏了你的socket变量。只需为其处理程序使用空参数列表:

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