UrsPahoMqttClient 心跳问题解决指南——Paho 底层已自动处理,设好 KeepAlive 就行
UrsPahoMqttClient 心跳问题解决指南——Paho 底层已自动处理设好 KeepAlive 就行问题用 UrsPahoMqttClient 做 MQTT 连接时心跳 PingReq 报文怎么发送目的是保持连接防止被 Broker 踢下线。结论不需要手动发心跳Paho 底层已内置实现。UrsPahoMqttClient 封装的是 Eclipse Paho MQTT 客户端心跳PingReq已经被 Paho 的CommsSender线程自动管理了。你只需要在 Connect 时传一个keepAliveSeconds参数就行。Connect 积木块Connect(brokerAddress, clientId, username, password, keepAliveSeconds)keepAliveSeconds 设多少推荐设30-60 秒设60 秒→ Paho 每隔30 秒自动发一次 PingReq设30 秒→ 每隔15 秒发一次设太小费流量设太大可能被 Broker 踢掉推荐直接用 60 秒省心又稳防止掉线的几个要点Connect 时传 keepAliveSeconds60监听 Disconnected 事件断开自动重连当 UrsPahoMqttClient1.Disconnected 调用 UrsPahoMqttClient1.Connect(...)WiFi 热点 / 4G / 企业防火墙环境NAT 超时可能额外导致掉线可加一个应用层定时器每 30 秒检查连接状态。FAQQ设置了 KeepAlive 还是掉线看看 Broker 是不是强制了更短的 KeepAlive 上限。有些公共 Broker如 test.mosquitto.org最大只允许 60 秒。另外重连太频繁也可能被限流断开后建议等 3 秒再重连。Q底层怎么发的想反编译看源码aix 文件解压后有 classes.dex用 jadx 反编译就能看。不过既然 Paho 已经封装好了设对 keepAliveSeconds 就行。底层就是定时往 TCP 发两个字节0xC0 0x00PingReq服务端回 0xD0 0x00PingResp。一句话总结UrsPahoMqttClient 的 Connect 块传 keepAliveSeconds60心跳 Paho 自动搞定不需要自己写 PingReq 代码。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2628701.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!