【发布时间】:2022-05-09 17:15:31
【问题描述】:
这是正常行为吗? socket.io-1.3.2.js 来自客户:
socket = io.connect('https://socket.myserver.nl');
socket.on('connect', function() {
socket.emit('register', userID, 'Lobby');//ignore this
});
服务器端节点版本v5.2.0:
io.sockets.on('connection', function (socket) {
console.log('SOCKET CONNECTING '+socket.id);
////lots of other code//////////
socket.on('disconnect', function() {
console.log('SOCKET DISCONNECTING '+socket.id);
});
});
在测试期间,当我与客户端建立与服务器的单个连接并且完全没有做任何事情时,我得到以下结果(大约 5 分钟):
套接字连接 SddHIXmWSeHEfDnlAAAC
插座断开 SddHIXmWSeHEfDnlAAAC
套接字连接 o0zj7GE1tlO3RQw1AAAD
插座断开连接 o0zj7GE1tlO3RQw1AAAD
套接字连接 lAnfvaF3DXMyhc6lAAAE
插座断开连接 lAnfvaF3DXMyhc6lAAAE
套接字连接 tP3cjtJ-VpPPjoG2AAAF
插座断开 tP3cjtJ-VpPPjoG2AAAF
套接字连接 a2o13T7CgcKDEbppAAAG
套接字断开连接 a2o13T7CgcKDEbppAAAG
SOCKET CONNECTING avogGTh0KVtLFOqNAAH
SOCKET DISCONNECTING avogGTh0KVtLFOqNAAH
SOCKET CONNECTING usoQGxKAMsth2zTcAAAI
SOCKET DISCONNECTING usoQGxKAMsth2zTcAAAI
【问题讨论】:
-
只有在刷新浏览器(客户端)或网络连接不持久时才会出现这种情况。
-
“然后什么都不做 - 这不太可能。要么你重新启动服务器,要么你刷新页面,要么你的互联网连接被断开并重新连接,这样的事情必须正在发生。无论如何,要处理这种情况,您需要实现用户会话,可能基于 cookie,使用套接字 io 搜索会话管理
-
尝试开启 socket.io 调试日志:
env DEBUG=socket.io:* node app(前提是您使用的是某种 Unix 类型的操作系统)。 -
@ingridsede 您可以将输出记录到文件中(将
> socket.io.log附加到我提到的命令中)。会有一些的性能影响,尽管我怀疑它会很明显。而且您对客户端调试是正确的:只需在控制台中发出命令并保持打开状态即可查看出现的日志消息。
标签: javascript socket.io