MQTT 5协议中的基础更改(一)

01 协议的基础性变化
mqtt 5是对现有协议规范的重大更新,新版本协议具有以下特征:轻量级、易用性、极强的可扩展性、对移动网络的适用性以及通信参与者的解耦。
02 mqtt仍然是mqtt
如果您熟悉mqtt3.1.1,那么您之前知道的关于mqtt的所有原则和功能同样适用于mqtt v5。不同的是,以往功能的部分细节,如“last will and testament”发生了一点变化,某些功能也得到扩展。此外,由虹科hivemq实现的额外的流行功能,如“ttl”或“共享订阅”被添加到新的规范中。
协议也稍有变化,增加了一个额外的控制包(auth)。
但总的来说,mqtt5仍然可以清楚地识别为mqtt。
03 mqtt 头部属性和原因代码
mqtt5最灵活的新功能之一是可以在mqtt头部中添加自定义键值(key-value)属性。与http等协议类似,mqtt客户端和代理可以添加任意数量的自定义(或预定义)头部来携带元数据。这种元数据可用于应用程序的特定数据,而预先定义的头部信息被用于实现大多数新的mqtt功能。
许多mqtt数据包现在也包括原因代码(reason codes)。一个原因代码表明发生了一个预先定义的协议错误。这些原因代码通常是在确认数据包中进行,允许客户端和代理解释错误情况(并有可能解决错误情况)。原因代码有时也被称为否定确认(negative acknowledgements)。以下mqtt数据包可以携带原因代码:
connack
puback
pubrec
pubrel
pubcomp
suback
unsuback
auth
disconnect
04 connack return codes—指示不支持/未实现功能
随着mqtt的普及,许多公司创建并提供了许多mqtt部署。但并非所有的这些实现都是完全兼容mqtt规范的,因为有时候一些功能并没有实现,比如qos 2、保留消息或持久会话。值得一提的是,虹科hivemq是完全符合mqtt规范的,并且支持所有的功能。
mqtt 5为不完整的mqtt实现提供了一种方法,用来表明该代理不支持特定的功能。客户端的工作是确保不使用不支持的功能。代理的部署是在connack数据包(客户端发送connect数据包后由代理发送)中使用预定义的标头来表明不支持特定的功能。当然,这些标头也可以用来向客户端发送通知,说明它没有使用特定功能的权限。
在mqtt 5中,有以下预定义的头部用于指示未实现的功能(或不允许客户端使用的功能):
这些返回代码对于在异构环境中沟通各个mqtt客户端的权限具有重要作用。这个新功能的缺点是:mqtt客户端需要自己实现对这些代码的解释,并且需要确保应用程序的程序员仅使用代理支持(客户端有权限)的功能。虹科hivemq 100% 支持所有 mqtt 5 功能,因此只有在涉及到部署中的权限时,管理员才会使用这些自定义头文件。
下期文章中,我们将继续给大家介绍mqtt5协议中的基础更改中其他新功能的细节描述。
05 关于虹科 hivemq
虹科hivemq 是一个基于 mqtt 数据传输的通信平台,旨在将数据快速、高效、可靠地传递给连接的物联网设备,hivemq 使用 mqtt 协议在设备和企业平台之间进行实时、双向的数据推送。
虹科hivemq 的建立是为了解决企业在构建新的物联网应用时面临的一些关键技术挑战,包括:
构建可靠、可扩展的关键业务物联网应用
快速的数据交付,以满足终端用户对响应式物联网产品的期望
通过有效利用硬件、网络和云资源降低运营成本
将物联网数据整合到现有的企业系统中

为什么产品开发人员应该重新考虑 5G 网络的时机
天府新区紫光芯城项目正式开工建设
美光将于9月14日之后将停止供货给华为
48V动力电池系统有哪些优势
官方出手?国家推动中科院和华为进行芯片的深度合作模式
MQTT 5协议中的基础更改(一)
Skyworks一季度业绩亮眼,营收达12.02亿美元
DASKeyboard4终极版评测 表现让人一试难忘
爱普生进博之约展奇幻光影 用数字科技赋能美好生活
PCB设计方法和技巧(5)
芯片制造比两弹一星还难?
华为MSC产品容量,处理能力和端口数量
连接的传感器和工业自动化网络
人工智能将助力水稻种植的精准施药
小米6最新消息:小米6会用什么指纹识别方案?黑科技!
检测LED灯珠体检的优点
区块链是否可以为能源行业助力
人工智能对于农业与工业的应用,及未来应解决的问题
浅析高校能耗及节能管理
不外接电阻的双输入采样保持放大器原理分析