物联网消息协议MQTT介绍 解析MQTT:物联网消息传输协议简介
物联网消息协议MQTT介绍
本文为你介绍物联网消息协议MQTT介绍的电脑小知识,接下来分享详细内容。
MQTT简介
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的”轻量级”通讯协议。

| 客户端 | 服务端 |
|---|---|
| 一个使用MQTT协议的应用程序或者设备,它总是建立到服务器的网络连接。客户端可以: | 也称为”消息代理”(Broker),可以是一个应用程序或一台设备。它是位于消息发布者和订阅者之间,它可以: |
| – (1)发布其他客户端可能会订阅的信息; | – (1)接受来自客户的网络连接; |
| – (2)订阅其它客户端发布的消息; | – (2)接受客户发布的应用信息; |
| – (3)退订或删除应用程序的消息; | – (3)处理来自客户端的订阅和退订请求; |
| – (4)断开与服务器连接。 | – (4)向订阅的客户转发应用程序消息。 |
设计原则
- 精简,不添加可有可无的功能;
- 发布/订阅(Pub/Sub)模式,方便消息在传感器之间传递,解耦Client/Server模式,带来的好处在于不必预先知道对方的存在(ip/port),不必同时运行;
- 允许用户动态创建主题(不需要预先创建主题),零运维成本;
- 把传输量降到最低以提高传输效率;
- 把低带宽、高延迟、不稳定的网络等因素考虑在内;
- 支持连续的会话保持和控制(心跳);
- 理解客户端计算能力可能很低;
- 提供服务质量( quality of service level:QoS)管理
- 不强求传输数据的类型与格式,保持灵活性(指的是应用层业务数据)。
MQTT应用领域
- 物联网M2M通信,物联网大数据采集
- Android消息推送,WEB消息推送
- 移动即时消息,例如Facebook Messenger
- 智能硬件、智能家居、智能电器
- 车联网通信,电动车站桩采集
- 智慧城市、远程医疗、远程教育
- 电力、石油与能源等行业市场
MQTT协议相关概念
MQTT协议构成

MQTT协议中的方法
| – (1)CONNECT:客户端连接到服务器 | – (9)SUBACK:订阅确认 |
|---|---|
| – (2)CONNACK:连接确认 | – (10)UNSUBSCRIBE:取消订阅 |
| – (3)PUBLISH:发布消息 | – (11)UNSUBACK:取消订阅确认 |
| – (4)PUBACK:发布确认 | – (12)PINGREQ:客户端发送心跳 |
| – (5)PUBREC:发布的消息已接收 | – (13)PINGRESP:服务端心跳响应 |
| – (6)PUBREL:发布的消息已释放 | – (14)DISCONNECT:断开连接 |
| – (7)PUBCOMP:发布完成 | – (15)AUTH:认证 |
| – (8)SUBSCRIBE:订阅请求 |
消息服务质量QOS
MQTT 协议中规定了消息服务质量(Quality of Service),它保证了在不同的网络环境下消息传递的可靠性,QoS 的设计是 MQTT 协议里的重点。
MQTT 设计了 3 个 QoS 等级。
– QoS 0:消息最多传递一次。
– QoS 1:消息传递至少 1 次。
– QoS 2:消息仅传送一次。
QoS0:”至多一次”,消息发布完全依赖底层TCP/IP网络,会发生消息丢失。一个消息不会被接收端应答,也不会被发送者存储并再发送。这个也被叫做“即发即弃”

QoS1:”至少一次”,确保消息到达,但消息重复可能会发生。发送者将会存储发送的信息直到发送者收到一次来自接收者的PUBACK格式的应答。
相关阅读
-
swiper是什么插件 有什么用?
Swiper常用于移动端网站的内容触摸滑动 Swiper是纯javascript打造的滑动特效插件,面向手机、平板电脑等移动终端。 Swiper能实现触屏焦点图、触屏Tab切换、触屏轮播图切换等常用效果。 Swiper开源
-
美食网页设计模板及代码 美食网站的设计与制作
为大家介绍的是美食网页设计模板及代码和美食网站的设计与制作的相关知识,具体内容如下: 现在是信息化年代,各行各业都执政互联网+转型,传统的美食职业也不能再单纯地依靠线下门店
-
Redis常用命令详解及实践案例
今天介绍Redis常用命令详解及实践案例的相关话题,一定能解决您的问题的,一起来了解吧! Redis是一个开源的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息代理。 Redis支持多
-
js数组删除另一个数组的数据 js数组删除指定对象
关于这个js数组删除另一个数组的数据和js数组删除指定对象的教程内容,一起跟随小编看看吧! 先定义一个数组 var data=[1,2,3,4] 1.将数组转换为字符串:.toString()和.join(); data.toString() == 1,2,3,4


