MQTT
一键更详细:
EMQX
MQTT v3.1.1 协议规范:
MQTT v5.0 协议规范:
听我吹牛皮
1.发布订阅模式的应用层网络协议(发布订阅模式----36种设计模式之一,好多设计都用到设计模式)
2.消息主题
2.1无消息主题 推送,会将推送的消息类型加到代理器消息类型库中(代理器会记录一下)
2.2 一般会先订阅自己想要的消息类型
2.3 服务质量QoS
服务质量 | 0 | 1 | 2 |
---|---|---|---|
消息次数n | <=1 | >=1 | 1 |
3.报文头及类型
固定报文 2个字节
bit | 7 6 5 4 3 2 1 0 |
---|---|
byte1 | 控制报文类型(7-4) 报文类型标志(3-0) |
byte 2 | 剩余长度 |
16种报文类型 0,15 预留
类型 | 值 | 备注 |
---|---|---|
预留 | 0 | 预留 |
CONNECT | 1 | 连接 |
CONNECTACK | 2 | 连接 报文确认 |
PUBLISH | 3 | 发布消息 |
PUBACK | 4 | 发布消息确认 QOS 1 |
PUBREC | 5 | 发布收到 QOS2 |
PUBREL | 6 | 发布释放QOS2 |
PUBCOMP | 7 | 消息发布完成QOS2 |
SUBSCRIBE | 8 | 客户端订阅 |
SUBACK | 9 | 订阅确认 |
UNSUBSCRIBE | 10 | 取消订阅 |
UNSUBACK | 11 | 取消订阅确认 |
PINGREQ | 12 | 心跳请求 |
PINGRESP | 13 | 心跳响应 |
DISCONNECT | 14 | 取消连接 |
预留 | 15 | 预留 |
数据长度采用变长度编码
1字节 0x00- 0x7F
2字节 0x8001 — 0xff7f(0x8000用来表示有更大的数据)
3字节 0x808001----0xffff7F
4字节 0x80808001 — 0xff ff ff 7f
可变报文头
有效载荷