MQTT是什么
MQTT: message queuing telemetry transport
,消息队列遥测传输协议,,是一种基于发布/订阅(publish/subscribe) 模式的“轻量级”通讯协议,,该协议构建于 tcp/ip协议上,,
一种低开销
,低带宽占用
的即时通讯协议
MQTT协议广泛应用于 物联网,移动互联网,智能硬件,车联网,电力能源等
- 物联网M2M通信,物联网大数据采集
- Android消息推送,WEB消息推送
- 移动即时消息,例如Facebook Messenger
- 智能硬件、智能家居、智能电器
- 车联网通信,电动车站桩采集
- 智慧城市、远程医疗、远程教育
- 电力、石油与能源等行业市场
mqtt中概念
- publisher 发布
- broker 消息代理(服务器)
- subscribe 接收者
- qos :
quality of service level
. 服务质量 - topic : 主题 :消息的主题
- payload: 负载:消息的内容
mqtt中的方法
MQTT中定义了一些方法,,也被称为动作
- connect : 客户端连接到服务器
- connack: 连接确认。acknowledge
- publish : 发布消息
- puback : 发布确认
- pubrec : 发布的消息已接收。 receive
- pubrel : 发布的消息已释放。release
- pubcomp : 发布完成 complete
- subscribe : 订阅
- suback : 订阅确认
- unsubscribe : 取消订阅
- unsuback : 取消订阅确认
- pingreq : 客户端发送心跳
- pingresp : 服务端心跳响应
- disconnect: 断开连接
- auth :认证
消息服务质量qos
三个qos等级:
-
qos 0 :消息最多传递一次,如果当时客户端不可用,则会丢失该消息
-
qos 1 : 消息传递至少 1次,,确保消息到达,但消息重复可能会发生
-
qos2: 只有一次,确保消息到达一次,,在一些比较严格的计费,消息重复或者丢失是不正确的结果
qos在 publiser ,broker,subscriber 都有,,如果发布的qos和服务器的qos不同,,那么统一qos为最下的qos:
通配符
多层通配符 #
,多层通配符只能为最后面
单层通配符 : +
EMQX
emqx是开源社区中最流行的MQTT服务器,,官网:https://www.emqx.cn/
docker安装emqx
docker pull emqx/emqx:v4.1.0
docker run -tid --name emqx -p 1883:1883 -p 8083:8083 -p 8081:8081 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx:v4.1.0
启动http://192.168.200.128:18083
访问dashboard
mqttx
mqttx是EMQ开源的一款优雅的跨平台MQTT5.0的桌面客户端