找公司做网站要注意什么问题,广西桂川建设集团网站,ps图做ppt模板下载网站,wordpress自定义html5MQTT是一个轻量的发布订阅模式消息传输协议#xff0c;专门针对低带宽和不稳定网络环境的物联网应用设计
MQTT协议根据主题来分发消息进行通信#xff0c;支持通配符匹配#xff0c;可以低开销的使用数百万Topic进行一对一#xff0c;一对多双向通信。
协议特点
1. 开放…MQTT是一个轻量的发布订阅模式消息传输协议专门针对低带宽和不稳定网络环境的物联网应用设计
MQTT协议根据主题来分发消息进行通信支持通配符匹配可以低开销的使用数百万Topic进行一对一一对多双向通信。
协议特点
1. 开放消息协议简单易实现2. 发布订阅模式一对多消息分发和应用程序分离3. 基于TCP/IP网络连接有序无损双向连接的网络协议4. 字节固定包头字节心跳报文报文结构紧凑协议交换最小化以减少网络流量5. 消息QoS支持可靠传输保证服务质量等级
QoS 0消息可能丢失
QoS 1消息不会丢失但可能重复
QoS 2消息不会丢失也不会重复MQTT报文类型
连接
CONNECT,CONNACk,DISCONNECT发布
PUBLISH,PUBACk,PUBREC(publish receive),PUBREL(publish release),PUBCOMP(publish complete)
订阅
SUBSCRIBE,SUBACk,UNSUBSCRIBE,UNSUBACk心跳
PINGREQ,PINGRESP主要报文类型
CONNECT
客户端标识符
用户名
密码
遗嘱消息PUBLISH
主题
QoS
Payload(负载)SUBSCRIBE
主题
QoS发布订阅模式
发布者订阅者 ---- Broker代理服务 ---- 订阅者发布者发布订阅和取消订阅的相关报文
如何发布消息
client ------ publish(Topic Name,QoS,Payload) ------- brokerTopic Name(String):
示例temperature livingroom/temperature kitchen/temperatureQos(Integer):
Qos 0 消息可能丢失
Qos 1 消息不会丢失但可能重复
Qos 2 消息不会丢失也不会重复Payload(Binary):
可为Json类型
{“from:client,temperature:26
}可为Binary类型进制数据
4d 69 72 61 63 6c 65 73...可为Ciphertext类型加密数据
UFsdGVkX1/PucJgtaTQ...如何订阅消息
client ------ subscribe(Packet ID,Subscription List) ------ brokerPacket ID:
Subscribe: Packet ID 45678
Suback: Packet ID 45678Subscription List:
Topic Filter 1(QoS 1)
Topic Filter 2(Qos 2)
Topic Filter 3(Qos 3)Topic Filter subscribe可以使用主题通配符
subscribed topic a/
代表: publish to topic a/1
也可代表: publish to topic a/2 等如何订阅响应
client ----- suback(Packet ID,Reason Codes) ------BrokerReason Codes(原因码):
成功
0x00订阅成功且最大QoS等级为0
0x01: 订阅成功且最大QoS等级为1
0x02订阅成功且最大QoS等级为2
失败
0x80订阅失败如何取消订阅
client ----- unsubscribe(Packet ID,Topic Filters) ----- broker想要取消订阅的Topic Filter ------ 完全的文本匹配 ----- 实际订阅的Topic Filter取消订阅响应
client ----- unsuback(Packet ID,Person Codes) ------ brokerTopic主题定义
UTF-8字符串类型,最大长度65535长度区分大小写home/livingroom/temperature 主题通配符 一次订阅多个主题主题通配符类型
1. 单层通配符(): /home//temperature2. 多层通配符(#): 也可匹配0个层级 /home/#3. 以$开头的主题$SYS/ (客户端上下线事件通知报文收发统计Broker状态信息)注意通配符和#可以同时使用不建议主题以“/”开头或者结尾准备条件
需要用到的工具
1.EMQX - MQTT Broker2.MQTTX- MQTT Client3.Wireshark-网络抓包工具拉取EMQX镜像
docker pull emqx:5.0.19运行EMQX
docker run -d --name emqx -p 18083:18083 -p 1883:1883 emqx:5.0.19修改EMQX日志等级为 Debug
docker exec -i emqx /opt/emqx/bin/emqx ctl log set-level debug查看EMQX日志
docker logs -f emgxmqtt题目练习
1. 发布两条QoS1消息这两条消息将使用不同的 Packet ID并且Packet ID 不需要我们自己设置。2. 订阅未授权的主题 ($SYS/#)EMQX将返回 Reason Code 为 0x80的SUBACK。3. 订阅 a/可以收到 a/1、a/2 等主题的消息。4. 订阅 a/ 和 a/1当有客户端发布消息到主题 a/1时订阅者将收到两条消息。5. 使用相同的主题过滤器进行多次订阅新的订阅会覆盖旧的订阅不会失败也不会收到重复的消息。6. 订阅时设置最大 QoS为 1发布 QoS为2的消息订阅者收到的消息的 QoS为17. 订阅a/1 和a/取消订阅 a/ 主题只会取消订阅 a/ 这个主题。8. example和Example、example/ 属于不同的主题。9. /example 主题必须用/ 来匹配仅使用是匹配不到的。10. 单层通配符可以多次出现订阅 a///d可以接收来自 a/1/2/d 和 a/3/4/d 主题的消息。11. 订阅 a/#可以接受来自 a/1 和 a/1/2 主题的消息12. 单层通配符和多层通配符可以同时使用订阅 a//# 主题发布消息到 a/1/2/3 主题13. 系统消息订阅 $SYS/brokers//clients/#可以接收到客户端上下线事件消息。