Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 触发断开连接事件时使用socket.get_Node.js_Socket.io - Fatal编程技术网

Node.js 触发断开连接事件时使用socket.get

Node.js 触发断开连接事件时使用socket.get,node.js,socket.io,Node.js,Socket.io,我在做一个小游戏。当一个客户端断开连接时,我希望其他客户端得到通知,以便他们删除客户端中的用户 socket.on('disconnect', function () { socket.get('player', function (error, player) { console.log(player.pseudo + ' is now disconnected.'); socket.broadcast.emit('removePlayer', play

我在做一个小游戏。当一个客户端断开连接时,我希望其他客户端得到通知,以便他们删除客户端中的用户

socket.on('disconnect', function () {
    socket.get('player', function (error, player) {
        console.log(player.pseudo + ' is now disconnected.');
        socket.broadcast.emit('removePlayer', player.pseudo);
    });
});
有时,我会遇到这样的错误:

            console.log(player.pseudo + ' is now disconnected.');
                              ^
TypeError: Cannot read property 'pseudo' of null
是因为玩家已经被移除了吗?这是获取玩家用户名的另一种方式吗

编辑: 哦,我明白了。当用户没有发送其伪代码时,错误出现了。所以,显然player.pseudo没有设置。现在我首先检查玩家是否已知

socket.on('disconnect', function (disconnect) {
    socket.get('player', function (error, player) {
        if (player) {
            console.log(player.pseudo + ' is now disconnected.');
            socket.broadcast.emit('removePlayer', player.pseudo);
        }
    });
});

您是否检查过错误变量中是否有错误?与问题无关,但很重要-如果您使用套接字对象本身的getter和setter,这会更好。@Pranav非常欢迎:-您能给我一个例子吗?我已经使用了getter socket.get和socket对象的setter,不是吗?是的,只是关于设置值。你做得对是为了得到。我确实错误地忽略了,道歉。