参考:
https://www.jianshu.com/p/54e0238d3fae
三种服务质量(QOS)
0(至多一次):消息发布完全依赖TCP/IP网络,会发生消息丢失或重复,可以用于传感器数据或者APP推送
1(至少一次):确保消息到达,但消息重复可能会发生
2(只有一次):确保消息到达一次。在一些要求比较严格的计费系统中,可以使用此级别。在计费系统中,消息重复或丢失会导致不正确的结果。这种最高质量的消息发布服务还可以用于即时通讯类的APP的推送,确保用户收到且只会收到一次。
Last Will(遗言)和Testament(遗嘱)机制通知各个客户端一场终端的机制
三种身份
MQTT有三种身份:发布者(Publish),代理(Broker 即服务器),订阅者(Subscribe),消息的发布和订阅都是客户端,一个客户端既可以是发布者也可以是订阅者
消息分类
MQTT的消息分类为:主题(Topic),负载(Payload)
订阅者订阅发布者发布的主题(Topic)后,发布者发布消息后,就会收到该主题的消息内容(Payload)
一些东西
订阅(Subscription),会话(Session),主题名(Topic Name),主题筛选器(Topic Filter),负载(Payload)
MQTT协议中的方法(动作)
MQTT协议中定义了一些方法(也被称为动作),来于表示对确定资源所进行操作。这个资源可以代表预先存在的数据或动态生成数据,这取决于服务器的实现。通常来说,资源指服务器上的文件或输出。主要方法有:
- Connect。等待与服务器建立连接。
- Disconnect。等待MQTT客户端完成所做的工作,并与服务器断开TCP/IP会话。
- Subscribe。等待完成订阅。
- UnSubscribe。等待服务器取消客户端的一个或多个topics订阅。
- Publish。MQTT客户端发送消息请求,发送完成后返回应用程序线程。
MQTT数据包结构
由三个部分构成:固定头(Fixed Header),可变头(Variable Header),消息体(Payload)