为什么我需要一个未定义的用户断开socket.io

为什么我需要一个未定义的用户断开socket.io,socket.io,chat,Socket.io,Chat,我正在使用socket.io构建聊天系统,我正在使用这个 io.on('connection', function( socket ){ socket.on('adduser', function( uname ){ socket.username = uname; }); socket.on('disconnect', function( ) { console.log( socket.username + " disconnecte

我正在使用socket.io构建聊天系统,我正在使用这个

io.on('connection', function( socket ){
     socket.on('adduser', function( uname ){
        socket.username = uname;
    });

    socket.on('disconnect', function( ) {
        console.log( socket.username + " disconnected");
    });
});
但它显示未定义的断开连接


此代码中的错误在哪里???

如果在该特定套接字上收到
adduser
消息之前收到
disconnect
消息,则不会设置
socket.username
属性,您将在控制台中看到
undefined disconnected

因此,显然客户端在断开连接之前没有发送adduser消息。如果我们能看到客户端代码,我们可以进一步提供帮助。或者,您可以将断开连接日志更改为以下内容:

io.on('connection', function( socket ){
     socket.on('adduser', function( uname ){
        socket.username = uname;
    });

    socket.on('disconnect', function( ) {
        if (socket.username) {
            console.log( socket.username + " disconnected");
        } else {
            console.log('socket disconnected before username set');
        }
    });
});