本文主要是介绍RTT学习 MQTT,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
MQTT背景应用
MQTT是机器对机器(M2M)/物联网(IoT)连接协议,它是专为受限设备和低带宽、高延迟或不可靠的网络而设计的,是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。
- Publisher:发布者
- Broker:代理(服务端)
- Subscriber:订阅者
- Topic:发布/订阅的主题
各类传感器的角色是发布者(Publisher)。譬如,湿度传感器和温度传感器分别向接入的MQTT Broker中发布两个主题名为Moisture和Temp的主题;伴随着这两个主题共同发布的,还是湿度值和温度值,被称为消息。
几个客户端的角色是订阅者Subscriber,如手机APP从Broker订阅了“Temp”主题,便能在手机上获取到温度传感器publish在Broker中的温度值。
发布者和订阅者的角色并非固定,而是相对的。
发布者也可以同时从Broker订阅主题,同理,订阅者也可以向Broker发布主题;即发布者可以是订阅者,订阅者可以是发布者。
Broker可以是在线的云服务器,也可以是本地搭建的局域网客户端;按照需求,实际上Broker自身也会包含一些订阅/发布主题的功能。
MQTT报文结构
任何通用/私有协议都是由事先规定好的、按某种规则约束的各种报文数据包组成的。
在MQTT协议中,所有的数据包都由最多三部分组成:固定header+可变header+有效载荷。
固定Header是必需的,可变Header和有效载荷是非必需的。
因此,理论上来说,MQTT协议数据包的最小长度为2个字节,造就了它本身占用的额外资源消耗最小化特色。
uMQTT的实现
uMQTT软件是RTT自主研发的。
uMQTT软件包功能如下:
- 实现基础的连接、订阅、发布功能;
- 具备多重心跳保活,设备重连机制,保证mqtt在线状态,适应复杂情况;
- 支持QoS=0,QoS=1,QoS=2三种发送信息质量;
- 支持多客户端使用;
- 用户端接口简便,留有多种对外回调函数;
- 支持多种技术参数可配置,易上手,便于产品化开发;
- 功能强大,资源占用率低,支持功能可裁剪。
这篇关于RTT学习 MQTT的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!