3. MQTT简要介绍

3. MQTT简要介绍,第1张

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议。它是一种发布/订阅,极其简单和轻量级的消息传递协议,专为受限设备和低带宽,高延迟或不可靠的网络而设计。它的设计思想是轻巧、开放、简单、规范,易于实现。这些特点使得它对很多场景来说都是很好的选择,特别是对于受限的环境如机器与机器的通信(M2M)以及物联网环境。相对于XMPP,MQTT更加轻量级,并且占用的宽带低。

MQTT协议有以下特点:

那么问题来了?重连连接成功后重复接收到最后一条消息
MQTT推送消息订阅端重复接收问题。
(背景)订阅端断开的时候,发布端多次推送消息。
(现象)订阅端启动时,接收到最后一条推送消息有两次;即使Qos设置为2;依然是两次。
经排查是因为
MqttMessage的Retained设置为了true;
该值很多文章上只说了是 消息保留机制,若设置为true,mqtt服务器会保留每次发布的消息;较少提到 若订阅某主题的客户端重启,则会把此主题之前发布的消息重新推送到客户端。该值默认为false;去掉修改该值即可
那么问题来了?重连连接后手动那么多遗漏的消息,怎么选择只接收最新的一条消息呢?
MQTT推送消息订阅端重复接收问题。
(背景)订阅端断开的时候,发布端多次推送消息。
(现象)订阅端启动时,接收到msg1,msg2,msg3 (这三个消息都是同一个类型消息,只需要处理最新的msg3就好,不然界面会刷新三次)这个谁有什么好办法没呢?

GitHub地址: >

物联网 (internet of thing) ,表示的是可以把一些带某些传感器的设备(终端),接入到互联网的行为。
通过互联网连接这些设备,这些设备就能够互相协作。
MQTT 就是这些设备之间数据通信的一个基于 TCP/IP 的协议。

每个终端都和实现了 MQTT 协议的代理/服务器相连。
通过 published MQTT 代理服务器的某个 主题 发送数据。
通过 subscription 从 MQTT 代理服务器获取自己订阅的 主题 数据。

MQTT 协议是一种轻量级的、灵活的网络协议。并且非常适合 IOT 的场景。

大多数开发人员已经熟悉了 >也不是特别麻烦,你先要清楚串口和服务器用的什么协议,假设串口用232,服务器采用TCP,那么你需要做的是建立一个客户端的发送模块,和一个串口的 *** 作模块(结合必须要用到多线程,以队列或者委托来做数据交换);在测试之前一定要保证串口和客户端发送接收是ok的才能做结合功能。
因为你串口已经做好了,那你需要的是将采集到的数据(字符串)保存到数组中,然后创建一个指向数组的指针p,然后在客户端模块里,将发送的数据写成&p。建议先将数据转16进制发,应该没毛病。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13489247.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-17
下一篇 2023-08-17

发表评论

登录后才能评论

评论列表(0条)

保存