node.js套接字是否记住以前的状态而不是当前状态?

时间:2016-03-31 19:48:51

标签: javascript node.js sockets

我正在尝试编写一个等待有两个免费用户的应用程序,然后将它们匹配在一起,为了做到这一点,我使用以下函数:

var gameManager;

io.on('connection', function(socket){
    connected_users.push(socket.id);
    console.log('user connected: ', socket.id);
    if (connected_users.length >= 2) {
        if (!gameManager) {
            var gameManager = require('./scripts/gameManager.js')();
            console.log('game started');
        }

        io.emit('initialize', gameManager.getFen());

    }
    console.log('appending event listener to user');

    socket.on('move', function(move_json) {
        console.log('move detected', move_json.player_id, gameManager)
        if(!gameManager) {
            return
        }

        // DO SOMETHING //
     });
});

似乎工作正常,当第二个用户立即连接两个游戏初始化时(我知道现在我正在向所有客户端发出初始化,这将在未来更改),但随后'移动'会发出从第一个客户端总是失败,而第二个客户端总是失败。

也就是说,假设A首先连接然后是B,当A执行触发发射的事件时,上面的日志行显示

  

移动检测到[玩家A的ID]未定义

在B上移动时给出了

  

移动检测到的[玩家B的ID] GameManager {/ *所有的抗议* /}

它不应该是完全相同的对象吗?为什么第一个套接字无法找到它而第二个套接字按预期工作?

0 个答案:

没有答案