写在前面
笔者写得比较简略,但是相信你都查到这个问题来了,肯定能看懂我在写什么。
笔者是用的esp12-e配合arduino IDE与Apollo服务器通过MQTT协议进行通信。其中在IDE用到了一个库文件“PubSubClient.h”。 都知道MQTT基本模式是订阅-发布机制,但是在实际应用出现了这样一个问题,如果发布者发布某条消息时,订阅者并未与服务器保持连接,那么订阅者将无法得到这条消息。
解决办法
首先在Apollo服务器官网上看了一下,发现是可以支持保留发布者最后一条消息的(其实根本原因是:MQTT协议里是支持这一操作的)。
附Apollo官方文档:http://activemq.apache.org/apollo/documentation/mqtt-manual.html#Topic_Retained_Messages
所以,我敢相信,“PubSubClient.h”这个库文件也肯定是有相关API的
附库文件API的链接:https://pubsubclient.knolleary.net/api.html
可以看到,在publish函数的参数里,有一个“retained”的参数,点进去这一行,发现这是一个布尔值,默认是false,只要在你的程序内把它改为true,就能解决我前面所述问题。