Workerman如何处理心跳检测?前端断线重连最佳时间间隔

秋静姑娘_4965

秋静姑娘_4965

2026-05-24

591人浏览

原创

workerman心跳检测必须由应用层主动实现,内核tcp_keepalive不可靠;前端重连需按设备与网络动态退避;onmessage首行必须无条件更新lastmessagetime,无论消息是否解析成功;未绑定uid的匿名连接也须初始化该时间戳;服务端超时阈值须严控在nat防火墙最短超时内(如≤90秒),并区分低功耗与高可靠设备设定不同心跳间隔与容忍阈值。

workerman如何处理心跳检测?前端断线重连最佳时间间隔

Workerman 心跳检测必须由应用层主动实现,内核 tcp_keepalive 基本不可靠;前端重连间隔不能固定,得按设备类型和网络环境动态调整。

onMessage 里必须无条件更新 lastMessageTime

很多人只在成功解析业务数据后才写 $connection->lastMessageTime = time(),结果客户端发的 {"type":"ping"} 因 JSON 解析失败被直接 return,时间戳没更新,30 秒后就被误判离线。

  • 所有进入 onMessage 的原始 $msg,第一行就该是 $connection->lastMessageTime = time(),不管它是不是 JSON、有没有字段、能不能 decode
  • 若需区分心跳与业务消息,建议用二进制前缀(如 \x01)或 WebSocket subprotocol,避免依赖 JSON 结构
  • 匿名连接(未调 $connection->bindUid())也要初始化 lastMessageTime,否则定时器遍历时触发 PHP Notice

服务端超时阈值必须严控在 NAT 防火墙最短超时之下

运营商级 NAT/4G 基站防火墙普遍在 60~120 秒内静默回收空闲连接,Linux 内核默认 net.ipv4.tcp_keepalive_time=7200 完全无效。

PigX UI 前端开发
PigX UI 前端开发

PigX UI Pro 前端开发指南 - Vue 3 + TypeScript + Element Plus。当用户提到 PigX UI、PigX 前端、lgb-mgui 项目、Vue 3 企业级后台开发、Element Plus 后台开发时使用此技能。

下载
  • 心跳间隔建议 ≤45 秒(客户端发 ping),服务端检查阈值设为 ≤90 秒(即允许丢一次心跳)
  • 农业传感器等低功耗设备:心跳间隔 90 秒,服务端超时检查设为 150 秒(容忍单次丢包)
  • 远程控制终端类设备:心跳间隔 25 秒,服务端超时设为 75 秒,并配合客户端三次探测 + 指数退避
  • 绝对禁止设成 5 秒——多数 4G 模组 AT 固件不支持高频心跳,反而导致模块卡死或流量暴增

前端重连不能用固定秒数,要分场景退避

固定 3 秒重连在弱网下会引发雪崩式重连请求,且无法应对模组冷启动、SIM 卡重注册等真实延迟。

  • 首次断线:立即重试(ws.close() 后立刻 new WebSocket)
  • 连续失败 2 次:退避至 3~5 秒,加随机抖动(±1 秒)防同步冲击
  • 连续失败 5 次:升至 15~30 秒,同时检查 navigator.onLine 和信号强度(如 modem.getSignalLevel())
  • 4G 模组务必监听 AT 响应(如 +CGATT: 1、+CREG: 1,1),只有注册成功后再建 WS 连接,否则重连全是空转

真正难的不是写定时器,而是把心跳逻辑嵌进每个数据入口点,以及让前端重连策略理解模组真实的网络生命周期——比如 SIM 卡附着可能耗时 8 秒,这期间任何重连都是徒劳。

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2303

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

4943

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6030

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5538

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

783

5

Workerman安装配置教程
Workerman安装配置教程

Workerman安装配置教程专题提供Workerman安装配置、WebSocket开发、TCP通信、异步编程、高并发服务搭建与PHP实时通信开发教程。

2026.05.20

166

15

Workerman实时通信与长连接开发教程
Workerman实时通信与长连接开发教程

WWorkerman实时通信与长连接开发教程聚合实时通信、聊天室、长连接、消息推送、AI流式输出等Workerman高并发开发内容。

2026.05.20

202

12

Workerman异步通信与TCP服务器开发
Workerman异步通信与TCP服务器开发

Workerman异步通信与TCP服务器开发专题整理Workerman异步通信、TCP服务、HTTP服务、WebSocket开发与高并发PHP服务器教程。

2026.05.20

187

13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程