您尚未登录。

楼主 # 2023-08-04 17:06:40

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,212
积分: 1148.5

请教,mqtt程序连上服务器后,拔掉网线,如何检测mqtt是否断线?

项目中用到mqtt,有个led灯想指示下mqtt的连接状态。

qt5+qmqtt库,连上网络后拔掉网线,没有触发disconnect和error信号,isConnectedToHost()返回的也是true。
先拔掉网线再运行程序,就可以触发error()信号,isConnectedToHost()返回也是false。

请教,如何检测mqtt的连接状态?

离线

#1 2023-08-04 18:24:50

wonderxue
会员
注册时间: 2021-04-16
已发帖子: 12
积分: 33

Re: 请教,mqtt程序连上服务器后,拔掉网线,如何检测mqtt是否断线?

心跳包?没有收到回复就认为断开链接了

离线

楼主 #2 2023-08-05 09:24:01

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,212
积分: 1148.5

Re: 请教,mqtt程序连上服务器后,拔掉网线,如何检测mqtt是否断线?

用的emqx的qmqtt程序,setKeepAlive(30),这样算是设置成30秒心跳包了吧?
我是在定时器里每5秒调用isConnectedToHost()函数。
测试结果,有时候拔掉网线后,四五十秒左右返回false,有时候则不行,过了几分钟仍返回true。

-------------------------------------------

如果放的足够久,还是可以返回false的,就是太久了,好几分钟...
感觉是不是我心跳包没设置好?

最近编辑记录 Gentlepig (2023-08-05 11:07:42)

离线

#3 2023-08-05 15:59:28

wonderxue
会员
注册时间: 2021-04-16
已发帖子: 12
积分: 33

Re: 请教,mqtt程序连上服务器后,拔掉网线,如何检测mqtt是否断线?

@Gentlepig
我看mqtt不是有报文pingreq和pingresp吗
你发送pingreq,没接收到pingresp就判断网络有问题。

离线

楼主 #4 2023-08-07 10:26:13

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,212
积分: 1148.5

Re: 请教,mqtt程序连上服务器后,拔掉网线,如何检测mqtt是否断线?

wonderxue 说:

@Gentlepig
我看mqtt不是有报文pingreq和pingresp吗
你发送pingreq,没接收到pingresp就判断网络有问题。

谢谢,确实有pingresp信号,不过本来设计的是三五分钟通讯一次,这样的话,就变成比较频繁的通讯了。
暂时放弃了led指示mqtt连接状态的想法。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn