为什么我将未定义的用户断开连接socket.io

时间:2017-01-30 00:14:50

标签: 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 + " disconnected");
    });
});

但显示未定义已断开连接

此代码中的错误在哪里?

1 个答案:

答案 0 :(得分:0)

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

所以,显然客户端在断开连接之前没有发送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');
        }
    });
});