mqtt断线重连注意事项

现在有不少项目的网络通讯都会使用到mqtt协议,MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,所以现在很多项目都会用到mqtt协议。 既然是网络上使用的通讯协议,那么断线重连就很重要,我自己做项目当中也遇到了这个问题,在mqttC++的开源库中,断线重连有一个官方提供的方式,就是在MQTTClient_connectOptions 这个结构体中的autoreconnect,只要把这个变量赋1,系统库就会自动帮你完成断线重连的工作,是非常方便的,但是呢,在很多海思的交叉编译工具当中是不支持到C++11的,这样就是使得mqttC++的官方开源库无法使用,只能用C的开源库,这个里面就不带断线重连的功能了,这样我们用户就只能自己实现这个功能。 这个里面会有一个坑,本身开源代码中会有 MQTTClient_setCallbacks(gMQTTClient, NULL, connlost, msgarrvd, delivered); 这个接口,这个里面的connlost就是断线之后的回调函数,这个里面需要我们自己添加代码,其实对于大部分程序员来说,断线了,我们做一个不断尝试重连的工作,直到连上了为止,这个思路并不难,但是mqtt不可以直接disconnect,然后尝试重连,这样会不断地占用socket,具体是什么原因造成的我也没有找到,应该是库里的代码造成的,这里需要直接MQTTClient_destroy掉整个对象,然后重新creat才可以,这里是个坑,需要注意。

免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:mqtt断线重连注意事项 https://www.yhzz.com.cn/a/15712.html

上一篇 2023-05-13 00:50:39
下一篇 2023-05-13 00:54:37

相关推荐

联系云恒

在线留言: 我要留言
客服热线:400-600-0310
工作时间:周一至周六,08:30-17:30,节假日休息。