MQTT 或 TCP 连接断开后自动重连设置
为什么断开后不重连
网络调试时经常碰到连接意外断开的情况:
- 电脑从 WiFi 切到有线,IP 变了。
- 路由器重启,局域网短暂断连。
- 云服务器短暂重启。
- MQTT Broker 临时不可用。
断开后需要手动重新点"连接"不仅麻烦,还会打断调试的思路和上下文。自动重连让 NetAssist 在后台悄悄恢复连接,你甚至感觉不到它断过。
TCP 客户端自动重连
V5.0.10 起 TCP Client 模式增加了断开自动重连选项。开启后:
- 连接意外断开时,NetAssist 会在设定的间隔时间(比如 3 秒)后自动重新发起连接。
- 重连失败则继续按间隔重试,直到连接成功或你手动停止。
- 重连成功后状态区会显示重连事件。
MQTT 断开重连
V5.15 修复了一个关键问题:MQTT 协议超时断开不重连。之前版本的 MQTT Client 在网络中断后不会自动恢复连接——需要手动重新点连接。升级到 V5.15 后这个问题解决了。
注意 MQTT 的自动重连和 TCP Client 的自动重连是两个独立的选项——各自在自己的模式设置里。
V5.0.13 的断网恢复优化
V5.0.13 进一步优化了断网恢复后的通信中断重连功能——之前版本在 Windows 断网恢复后即使开启了自动重连,也可能因为底层 socket 状态混乱导致连不上。现在这个边界情况也处理了。
重连间隔设置
自动重连的时间间隔可以在设置里调整:
- 3 秒:适合网络波动不严重的场景,快速恢复。
- 10~30 秒:适合重连开销大的场景(比如 MQTT 需要重新鉴权、订阅主题)。
- 不要设得太短(如 1 秒)——重连太频繁会对服务器造成压力,也可能被防火墙判定为异常。
重连后的状态
重连成功后:
- 发送区的历史记录和快捷指令保持不变。
- 接收区不会清空——之前收到的数据还在。
- 但重连期间对方发来的数据会丢失——自动重连只是恢复连接,不会补发断线期间的数据。如果需要不丢失数据,要依赖协议层的确认机制(比如 MQTT QoS 1/2、TCP 应用层确认)。
实操建议
长时间 IoT 调试:
- MQTT Client 开启自动重连。
- 重连间隔设 10 秒(MQTT 重连开销比 TCP 大)。
- Broker 端也建议开启遗嘱消息(LWT),方便感知设备断线。
移动场景(笔记本电脑):
- 电脑在不同网络之间切换(WiFi → 有线 → 热点),TCP Client 开启自动重连。
- 如果 IP 地址变化了还需要手动更新远程主机地址——自动重连只会用原来的地址重试。