`
CshBBrain
  • 浏览: 651172 次
  • 性别: Icon_minigender_1
  • 来自: 成都
博客专栏
B7d9bf34-126e-301f-819e-81f2615b5a2a
开源WebSocket服务...
浏览量:145166
Group-logo
HTML5移动开发
浏览量:138063
社区版块
存档分类
最新评论

MQTT协议-- MQ Telemetry Transport

 
阅读更多

转自:http://www.cnblogs.com/caca/p/mqtt.html

MQTT - MQ Telemetry Transport

 
  • 轻量级的 machine-to-machine 通信协议。
  • publish/subscribe模式。
  • 基于TCP/IP。
  • 支持QoS。
  • 适合于低带宽、不可靠连接、嵌入式设备、CPU内存资源紧张。
  • 是一种比较不错的Android消息推送方案。
  • FacebookMessenger采用了MQTT。
  • MQTT有可能成为物联网的重要协议。
 

消息体

 
 
 

MessageType

 
 
 
CONNECT
TCP连接建立完毕后,Client向Server发出一个Request。
如果一段时间内接收不到Server的Response,则关闭socket,重新建立一个session连接。
如果一个ClientID已经与服务器连接,则持有同样ClientID的旧有连接必须由服务器关闭后,新建立才能建立。
 
CONNACK
Server发出Response响应。
0x00 Connection Accepted
0x01 Connection Refused: unacceptable protocol version
0x02 Connection Refused: identifier rejected
0x03 Connection Refused: server unavailable
0x04 Connection Refused: bad user name or password
0x05 Connection Refused: not authorized
 
PUBLISH 发布消息
Client/Servier均可以进行PUBLISH。
publish message 应该包含一个TopicName(Subject/Channel),即订阅关键词。
 
关于Topic通配符
/:用来表示层次,比如a/b,a/b/c。
#:表示匹配>=0个层次,比如a/#就匹配a/,a/b,a/b/c。
单独的一个#表示匹配所有。
不允许 a#和a/#/c。
+:表示匹配一个层次,例如a/+匹配a/b,a/c,不匹配a/b/c。
单独的一个+是允许的,a+不允许,a/+/b不允许
 
PUBACK 发布消息后的确认
QoS=1时,Server向Client发布该确认(Client收到确认后删除),订阅者向Server发布确认。
 
PUBREC / PUBREL / PUBCOMP
QoS=2时
1. Server->Client发布PUBREC(已收到);
2. Client->Server发布PUBREL(已释放);
3. Server->Client发布PUBCOMP(已完成),Client删除msg;
订阅者也会向Server发布类似过程确认。
 
PINGREQ / PINGRES 心跳
Client有责任发送KeepAliveTime时长告诉给Server。在一个时长内,发送PINGREQ,Server发送PINGRES确认。
Server在1.5个时长内未收到PINGREQ,就断开连接。
Client在1个时长内未收到PINGRES,断开连接。
一般来说,时长设置为几个分钟。最大18hours,0表示一直未断开。
 
 

QoS

 
 
QoS=0:最多一次,有可能重复或丢失。
 
QoS=1:至少一次,有可能重复。
Client[Qos=1,DUP=0/*重复次数*/,MessageId=x] --->PUBLISH--> Server收到后,存储Message,发布,删除,向Client回发PUBACK
Client收到PUBACK后,删除Message;如果未收到PUBACK,设置DUP++,重新发送,Server端重新发布,所以有可能重复发送消息。
 
QoS=2:只有一次,确保消息只到达一次(用于比较严格的计费系统)。
 
 

Clean Session

 
如果为false(flag=0),Client断开连接后,Server应该保存Client的订阅信息。
如果为true(flag=1),表示Server应该立刻丢弃任何会话状态信息。
 
 
 

Refs

 
 
  • 大小: 809.4 KB
分享到:
评论

相关推荐

    MQTT-一种传感器通信协议

    MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅模式的消息传输协议,它被设计用于低带宽、高延迟或不可靠的网络环境。由于其低开销、支持一对多的消息分发特性,MQTT成为物联网(IoT)领域中...

    mqtt协议文档(中文版)

    MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种广泛应用于物联网(IoT)领域的轻量级发布/订阅式网络通信协议。它的设计目标是为资源有限的设备提供高效可靠的数据传输,特别是在低带宽、高...

    mqtt-win_x64.rar

    MQTT,全称Message Queuing Telemetry Transport,是一种轻量级的发布/订阅(Publish/Subscribe)消息协议,常用于物联网(IoT)设备之间的通信。它设计的目标是低带宽、高延迟、不可靠的网络环境,使得资源有限的...

    C++实现mqtt协议

    MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息协议,常用于物联网(IoT)设备之间的通信。在C++中实现MQTT协议可以为开发者提供灵活且高效的解决方案,尤其对于资源受限的嵌入式系统。...

    MQTT协议及车联网应用.pdf

    MQTT(MQ Telemetry Transport)协议是一种轻量级的发布/订阅式消息传输协议,特别适合于物联网(IoT)设备之间的通信。由于物联网设备通常具有网络环境不稳定、内存和存储资源有限、处理能力受限的特点,MQTT协议以...

    IBM WebSphere MQ Telemetry性能测试报告

    MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息传输协议,专为低带宽、高延迟或不可靠的网络而设计。MQTT协议的特点包括: - **小包头**:相比其他协议,MQTT包头更小,减少了网络传输...

    Mqtt test测试包

    MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息协议,常用于物联网(IoT)设备之间的通信。这个“Mqtt test测试包”可能是为了帮助开发者理解和验证MQTT协议的工作原理,或者对相关应用进行...

    SIM800_MQTT-master.zip_MQTT SIM800_SIM800_SIM800 MQTT_arduino_mq

    SIM800_MQTT-master.zip 是一个针对Arduino平台的库,主要目的是让开发者能够使用SIM800系列GSM/GPRS模块与MQTT(Message Queuing Telemetry Transport)协议进行通信。SIM800系列模块是GSM/GPRS模块,广泛应用于...

    使用Arduino MKR1010的带有ThingsBoard Cloud的MQTT协议-项目开发

    MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息协议,特别适合资源有限的设备和低带宽、高延迟的网络环境。它设计的核心原则是低开销、高可靠性以及最小的基础设施需求,使得它成为物联网...

    mqtt-v3.1.1

    MQTT stands for MQ Telemetry Transport. It is a publish/subscribe, extremely simple and lightweight messaging protocol, designed for constrained devices and low-bandwidth, high-latency or unreliable ...

    MQTT_V3.1protocol-specific(chinese).rar_MQ_MQTT协议中文_java mqtt_mq

    MQ遥测传输(MQ Telemetry Transport,MQTT)是一个轻量级的基于代理的发布/订阅式消息传输协议,它的设计目标是开放、简单、轻量和易于实现。这些特征使它适用于各种受限环境,比如,但不限于: 网络代价昂贵,低...

    python云打印实现-client-mqtt版(需要配合mq支持word、excel;不支持pdf

    在本文中,我们将深入探讨如何使用Python和MQTT(Message Queuing Telemetry Transport)协议来构建一个云打印客户端。MQTT是一种轻量级的发布/订阅消息协议,特别适合于物联网(IoT)设备和低带宽、高延迟或不可靠的...

    MQTT协议简述

    MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种高效、简单且易于实现的轻量级消息传输协议。它最初由Andy Stanford-Clark(来自IBM公司)和Arlen Nipper(来自Arcom公司,现更名为Eurotech)...

    mqtt-v3.1.pdf

    MQ Telemetry Transport (MQTT) is a lightweight broker-based publish/subscribe messaging protocol designed to be open, simple, lightweight and easy to implement

    MQTT-ESP8266.zip

    MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息协议,特别适合资源有限的设备,如嵌入式系统。在这个系统中,MQTT作为物联网通信的核心,使得STM32通过ESP8266将数据安全高效地传输到阿里...

    MQTT入门教材

    **MQTT**,全称为**Message Queuing Telemetry Transport**(消息队列遥测传输协议),是一种基于**发布/订阅**模型的轻量级消息协议,适用于资源受限的环境。它的主要特点包括: - **开放性**:MQTT协议是开放的,...

    Activemq-MQTT-Websocket库Js文件mqttws31.js

    MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息协议,最初设计用于远程位置的低带宽、高延迟或不可靠网络通信。它非常适合物联网(IoT)设备,因为它的设计目标是高效、可靠且易于实现。...

    stm32 ESP8266-OneNet-MQTT-烟雾酒精.zip

    OneNet是中移物联网有限公司提供的开放云服务平台,支持MQTT(Message Queuing Telemetry Transport)协议,用于设备和云端的数据交互。 STM32F103C8T6是意法半导体公司生产的一款基于ARM Cortex-M3内核的微控制器...

    mqtt3.1中文版协议

    MQ遥测传输(MQ Telemetry Transport,简称MQTT)是一种高效、简单的消息传输协议,它最初由IBM和Eurotech共同开发并公开发布。该协议的设计初衷是为了解决受限环境下的数据通信问题,如移动网络、卫星网络以及其他...

    mqtt调制工具

    mqtt 测试工具,MQTT(MQ Telemetry Transport)是IBM开发的一种网络应用层的协议 使用场景: 1、不可靠、网络带宽小的网络 2、运行的设备CPU、内存非常有限 特点: 1、基于发布/订阅模型的协议 2、他是二进制协议,...

Global site tag (gtag.js) - Google Analytics