我正在制作一个需要将套接字映射到某个对象的应用程序。我认为使用 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]);
}
});
我不确定,但我认为这不是预期的效果。为什么会发生这种情况,我将如何解决它?