提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
基本介绍
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上;以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。
客户端
一个使用了 MQTT 的程序或设备。一个客户端往往:
- 打开通往服务器的网络连接
- 发布其他客户端可能会感兴趣的应用消息
- 通过订阅来接收自己感兴趣的应用消息
- 通过取消订阅,不再接收应用消息
- 关闭通过服务器的网络连接
服务器
一个在发布应用消息的客户端和订阅应用消息的客户端之间充当转发中介的程序或设备。一个服务器往往:
- 接收来自客户端的网络连接
- 接收客户端发布的应用消息
- 处理客户端的订阅和取消订阅请求
- 根据客户端的订阅情况匹配转发应用消息
- 关闭和客户端的网络连接
一、发布和订阅
三种身份:发布者、代理(服务器)、订阅者
提供一对多的消息分发机制,一消息发送--MQTT服务器---多设备
服务器分发消息,为发布者;
客户端可以发布消息,可以订阅消息;
订阅包含主题筛选器和最大服务质量,其与一个会话关联。
二、QoS服务质量
0 :可能发生消息丢失。client->server
消息发布完全依赖底层TCP/IP网络,用于环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送;
1 :至少传送一次消息Cloud Maintain init给订阅者。client<-->server(回应ack)
可能会发生消息重复;
2 :消息到目的地一次,消息会存储两次(发布、响应;回应、响应)
用于要求比较严格的计费系统,用于即时通讯类的APP的推送,确保用户收到且只会收到一次。
三、消息
Topic主题,消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容;
payload负载,消息的内容。
建立客户端到服务器的连接,建立有序、无损的基于字节流的双向传输。
Sesseion会话:
客户端与服务器建立连接后即形成会话;
Topic Filter主题筛选器:
对主题名通配符的筛选器,在订阅表达式中使用,表示订阅所匹配到的多个主题。
‘+’: 表示通配一个层级,例如a/+,匹配a/x, a/y
‘#’: 表示通配多个层级,例如a/#,匹配a/x, a/b/c/d
三、方法
Connect:等待与服务器建立连接。
Disconnect:等待MQTT客户端完成所做的工作,并与服务器断开TCP/IP会话。
Subscribe:等待完成订阅。
UnSubscribe:等待服务器取消客户端的一个或多个topics订阅。
Publish:MQTT客户端发送消息请求,发送完成后返回应用程序线程。
Last Will:即遗言机制,用于通知同一主题下的其他设备发送遗言的设备已经断开了连接。
Testament:遗嘱机制
四、心跳保活
客户端在一个心跳周期内,向服务器发送ping请求,服务器立即回应心跳响应,保证建立长连接;如果服务器在1.5T内没有收到心跳报文,则断开连接,客户端没有收到服务器心跳响应,则认为已断开连接