Socket.IO socket.id 更改同一客户端而不重新连接
Socket.IO socket.id changing for same client without reconnect
我正在制作一个应用程序,我需要将套接字映射到某个对象。我认为使用 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]);
}
});
我不确定,但我认为这不是预期的效果。为什么会发生这种情况,我将如何解决它?
我正在使用节点检查器来调试我的应用程序,因为我将代码保存在某个断点上,所以它断开了客户端的连接(可能是某个超时客户端)。这就是为什么当我继续执行代码时,我得到了一个新的 socket.id。
看起来像在重新连接"myEvent"或套接字之前发出的"someOtherEvent"。我在生产中的两个不同项目中使用 socket.id 作为连接标识符,它可以正常工作。
相关文章:
- SignalR客户端启动连接时如何设置用户
- 服务器上的Meteor客户端断开连接事件
- 在客户端断开连接时释放事件处理程序 Socket.IO
- XMPP客户端未连接-使用Node Bosh服务器
- C/SSL/JQuery.ajax() 客户端 - >服务器连接重置,但发送了 1 个字节
- socket.io 服务器在注册客户端断开连接时非常延迟
- 客户端断开连接后的服务器清理
- JavaScript 错误:“调用的对象已与其客户端断开连接”在 IE8 中的 window.open 上
- 为什么 php 在打印数据时在客户端断开连接时中止,否则不会
- JavaScript异常”;调用的对象已与其客户端断开连接"打开(..)
- webrtc通过websocket客户端/服务器连接问题
- Node.js聊天服务器,当另一个用户发送数据时,客户端断开连接
- Javascript错误“;被调用的对象已与其客户端断开连接”;创建ActiveXObject时
- 强制客户端重新加载bundle.js
- 确定客户端的连接是否已断开
- 我需要路由数据在客户端之间的节点客户端正确连接的用户
- 正在启动从客户端重新加载页面
- PHP使用客户端IP连接smtp服务器
- 客户端在连接到网站时未在('connection')上点击io
- 如何断开 socket.io 与客户端的连接并重新连接