本文将介绍使用 Node-RED 连接到 MQTT 服务器,并对 MQTT 数据进行过滤和处理后再将其发送至 MQTT 服务器的完整 *** 作流程。读者可以快速了解如何使用 Node-RED 对 MQTT 数据进行简单的流处理。
Node-RED 无论是在你本地的电脑上,还是树莓派等设备,亦或是云端服务器,都可以快速安装和使用,下面将使用两种比较常见的安装方式:
使用 npm 进行全局安装:
使用 Docker 进行安装:
如果使用的是 npm 进行的全局安装,那么在提示安装成功后,只需要在全局运行 node-red 命令就可以立即启动 Node-RED。
无论是使用 Docker 还是 npm 在启动成功后,我们只需要打开浏览器,输入当前地址加 1880 端口号,即可打开 Node-RED 的浏览器编辑器页面,例如在本地运行的话,打开浏览器,输入 >
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地址: >
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)