定时器相关疑问

dangpengsong

我知道gatewayworker里面,正常关闭客户端或者服务器主动关闭都会调用onClose函数,极端情况下不会调用,这样客户端下线,服务器是无感知的,如果心跳由服务器主动发送,就可以规避这种极端情况不调用onClose
不过现在的情况是:心跳必须由硬件维持(特殊情况),我想通过定时器来实现对链接的监控,如果超过三十秒没有接到硬件发来的心跳数据或其他数据,则主动关闭链接,触发onClose事件,然后我发现现在的定时器定时后,要么到时间执行,要么删除,有没有办法更新它的执行时间,比如三十秒内接到了心跳,就重置定时器时间,觉得如果每次心跳都新建一个定时器,然后又删除,这样会比较占用资源吧,影响效率

2032 1 0
1个回答

six

GatewayWorker里自带心跳功能,可以做到超过多久没收到任何数据就关闭连接。
http://doc2.workerman.net/heartbeat.html
设置那个$gateway->pingNotResponseLimit

年代过于久远,无法发表回答
🔝