在socket.io中从客户端控制心跳超时
我将移动客户端连接到node.js服务器,并通过xhr-polling运行socket.io。我有两种类型的客户:
- A型
当由于网络问题(或客户端崩溃)而导致连接中断时,默认的心跳超时时间过长
- B型
当此客户端的连接断开时,我需要给它更多的时间来恢复-与服务器断开连接/会话相比,客户端进行恢复更重要
所以我的问题是如何配置(如果可能)来自实际客户端的心跳超时?
回答:
据我所知,这里有2个重要的值:服务器每秒钟发送一次心跳到客户端heartbeat
interval;客户端直接响应,如果没有响应,则服务器确定客户端已死。heartbeat
timeout自上次心跳以来,客户端等待服务器的心跳数秒(显然应高于heartbeat interval
)。如果heartbeat
timeout几秒钟后仍未收到来自服务器的消息,则认为服务器已死(并将根据您设置的其他选项开始断开连接/重新连接。
默认值为heartbeat interval = 25s
和heartbeat timeout = 60s
。两项都在服务器上设置,heartbeat
timeout在连接时将其发送到客户端。
更改heartbeat timeout
单个客户端的值很容易:
var socket = io.connect(url);socket.heartbeatTimeout = 20000; // reconnect if not received heartbeat for 20 seconds
但是,在服务器上,该heartbeat interval
值似乎是共享对象(Manager,这是您从var io =
require("socket.io").listen(server)调用中得到的)的一部分,这意味着无法轻松地为单个套接字更改它。
我敢肯定,通过一些socket.io黑客攻击,您应该能够实现这一目标,但是您可能会破坏该过程中的其他内容…
以上是 在socket.io中从客户端控制心跳超时 的全部内容, 来源链接: utcz.com/qa/430529.html