socket.io中有一种方法可以在断开连接的事件中创建超时,然后检查用户是否已重新连接?
这个想法是只有在超时后没有重新连接用户时才在数据库中发出数据/保存用户状态
编辑:跟随@Are Wojciechowski回答,我已经完成了多标签和F5泛滥处理程序
Web应用程序.NodeJS + Socket.io(仅限websockets,启用心跳).
我的应用程序工作正常(它连接到Socket.io,它正确地发出/接收消息),但我检测到随机断开,而不是因为心跳超时.即使服务器从客户端收到心跳包,仍然可能在几秒钟内断开此客户端.我不明白原因.它几乎是随机发生的,大约每3-15分钟一次.更改socket.io配置似乎不会影响频率.
这是日志,它清楚地表明断开连接的原因不是心跳超时,而是传输端(套接字端):
日志:
debug: emitting heartbeat for client cTVCsv2GS2R_lh3Ecao-
debug: websocket writing 2::
debug: set heartbeat timeout for client cTVCsv2GS2R_lh3Ecao-
debug: got heartbeat packet
debug: cleared heartbeat timeout for client cTVCsv2GS2R_lh3Ecao-
debug: set heartbeat interval for client cTVCsv2GS2R_lh3Ecao-
info: transport end (socket end)
// ^ Why?
debug: set close timeout for client cTVCsv2GS2R_lh3Ecao-
debug: cleared close timeout for client cTVCsv2GS2R_lh3Ecao-
debug: cleared heartbeat interval for client cTVCsv2GS2R_lh3Ecao-
SOCK 25.12 …Run Code Online (Sandbox Code Playgroud) 在客户端和服务器之间使用 WebSocket 全双工数据连接时,我是否可以保证,当从服务器发送两条消息时,我将在客户端收到这两条完全相同的消息,而TCP 没有?
换句话说,如果服务器依次发送hello,那么its me客户端是否总是收到两条包含 的消息hello,its me或者客户端是否有可能收到helloit然后s me甚至只有一条消息,例如helloits me?
node.js ×2
socket.io ×2
websocket ×2
connection ×1
integrity ×1
javascript ×1
message ×1
sails.js ×1