WebSocket是为了HTML5应用方便与服务器双向通讯而设计的协议,>MQTT 协议 因为其轻量、灵活等特点成为了当今世界上最受欢迎的物联网协议,它已经广泛应用于车联网、智能家居、物流、即时聊天应用和移动消息推送等领域,连接了数以亿计的设备,并且每时每刻都有无数设备开始使用和接入 MQTT 协议。MQTT 协议为这些设备提供了稳定、可靠的通信基础,这些设备庞大的接入数量也向 MQTT 协议规范提出了挑战, MQTT 50 的诞生便是为了更好地满足这一需求。
MQTT(消息队列遥测传输)最初由 IBM 于上世纪 90 年代晚期发明。它最初的用途是将石油管道上的传感器与卫星相链接,所以 MQTT 从诞生之初就是专为受限设备和低带宽、高延迟或不可靠的网络而设计,它使用了发布订阅模型,在空间和时间上解耦了消息的发送者与接收者,并且基于 TCP/IP 提供稳定可靠的网络连接,拥有非常轻量的报头以减少传输开销,支持可靠消息传输,可以说天生就满足了物联网场景的各种需求。在 MQTT 311 发布并成为 OASIS 标准的四年后,MQTT 50 正式发布,这是一次重大的改进和升级,它的目的不仅仅是满足现阶段的行业需求,更是为行业未来的发展变化做了充足的准备。2019 年 3 月,MQTT 50 成为了新的 OASIS 标准。
面对迅速增长的设备数量和层出不穷的需求,OASIS MQTT 技术委员会需要从繁杂的需求中提取出通用部分,将其纳入标准规范,并且尽可能不增加开销或降低易用性,在不增加不必要的复杂性的前提下提高性能和易用性。
最终,OASIS MQTT 技术委员会为 MQTT 50 添加了大量的全新功能与特性,50 成为 MQTT 有史以来变化最大的一个版本。在这里,我们将列举一些比较重要的特性:
完整的新属性列表包含在协议标准的附录C,您可以访问以下网址了解详情: >物联网主要功能是将用户端的所有需要的信息互通互联,实现全方位的远程识别、读取和 *** 控、互动。
应用层位于物联网三层结构中的最顶层,其功能为“处理”,即通过云计算平台进行信息处理。应用层与最低端的感知层一起,是物联网的显著特征和核心所在,应用层可以对感知层采集数据进行计算、处理和知识挖掘,从而实现对物理世界的实时控制、精确管理和科学决策。
从结构上划分,物联网应用层包括以下三个部分:
1. 物联网中间件:物联网中间件是一种独立的系统软件或服务程序,中间件将各种可以公用的能力进行统一封装,提供给物联网应用使用。
2. 物联网应用:物联网应用就是用户直接使用的各种应用,如智能 *** 控、安防、电力抄表、远程医疗、智能农业等等。
3. 云计算:云计算可以助力物联网海量数据的存储和分析。依据云计算的服务类型可以将云分为:基础架构即服务(IaaS)、平台即服务(PaaS)、服务和软件即服务(SaaS)
从物联网三层结构的发展来看,网络层已经非常成熟,感知层的发展也非常迅速,而应用层不管是从受到的重视程度还是实现的技术成果上,以前都落后于其他两个层面。但因为应用层可以为用户提供具体服务,是与我们最紧密相关的,因此应用层的未来发展潜力很大。
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条)