同一客户端的 Socket.IO socket.id 更改而无需重新连接

Rub*_*oms 3 javascript websocket node.js socket.io

我正在制作一个应用程序,需要将套接字映射到某个对象。我认为使用 Socket.IO 提供的 socket.id 变量会很安全。不幸的是,在调试时我发现 socket.id 发生了变化,而客户端没有断开/重新连接或其他任何操作。

这是一小段代码来展示我正在尝试做的事情:

var io         = require('socket.io').listen(8080),
var myVariable = new Array();

// Main event loop
io.sockets.on('connection', function (socket) {
    socket.on('myEvent', function(data) {
        myVariable[socket.id] = data;
    }
    // 'someOtherEvent' which uses the mapped data.
    socket.on('someOtherEvent', function(data) {
        // Doesn't always work because socket.id has changed and var is empty
        doSomethingWith(myVariable[socket.id]);
    }
});
Run Code Online (Sandbox Code Playgroud)

我不确定,但我认为这不是预期的效果。为什么会发生这种情况以及我该如何解决它?

Rub*_*oms 5

我正在使用节点检查器来调试我的应用程序,因为我将代码保存在某个断点上,所以它断开了客户端的连接(可能是客户端超时)。这就是为什么当我继续执行代码时我得到了一个新的socket.id。