MQTT 简介

【参考文章】:基于Mqtt的IM开发html

【参考文章】:阿里___MQTT中协议QoS的实现git

【参考文章】:MQTT入门篇github

1. 简介

  MQTT 是一个客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简单、规范,所以易于实现。这些特色使得它对不少场景来讲都是很好的选择,包括受限的环境如机器与机器的通讯(M2M)以及物联网环境(IoT),这些场景要求很小的代码封装或者网络带宽很是昂贵。网络

  由于MQTT是协议,想要使用它就必须找实现这个协议的库文件或者服务组件,这是实现MQTT协议的服务组件架构

  搭建完成MQTT的服务端环境,再经过封装的MQTT客户端API,就可使用了。post

2. 特色

  • 轻量级的 machine-to-machine 通讯协议。
  • publish/subscribe模式。
  • 基于TCP/IP。
  • 支持QoS。

3. 应用场景

  • 适合于低带宽、不可靠链接、嵌入式设备、CPU内存资源紧张。
  • 是一种比较不错的Android消息推送方案。
  • FacebookMessenger采用了MQTT。
  • MQTT有可能成为物联网的重要协议

4. 主题

  MQTT是经过主题对消息进行分类的,本质上就是一个UTF-8的字符串,不过能够经过反斜杠表示多个层级关系。主题并不须要建立,直接使用便可。url

  主题还能够经过通配符进行过滤。spa

  /:用来表示层次,好比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不容许

5. 服务质量(Quality of Service,QoS)

5.1 QoS=0

  最多一次,质量级别最低,不须要应答确认。
  尽操做环境所能提供的最大努力分发消息,可是遇到意外并不会重试。消息可能会丢失。
  例如,这个等级可用于环境传感器数据,单次的数据丢失不要紧,由于不久以后会再次发送。

5.2 QoS=1

  至少一次,有可能重复。
  消息接收者若是没有知会或者知会自己丢失,消息发送者会再次发送以保证消息接收者至少会收到一次,固然可能形成重复消息。
  收到控制报文后须要应答确认,好比建立链接、发消息、收消息、心跳。

5.3 QoS=2

  只有一次,确保消息只到达一次(用于比较严格的计费系统)。
  收到控制报文后须要应答确认,最高的服务质量,须要额外的开销,由于这种质量下,收到控制报文须要双向确认应答。

6. 消息类型

MQTT拥有14种不一样的消息类型:

  1. CONNECT:客户端链接到MQTT代理
  2. CONNACK:链接确认
  3. PUBLISH:新发布消息
  4. PUBACK:新发布消息确认,是QoS 1给PUBLISH消息的回复
  5. PUBREC:QoS 2消息流的第一部分,表示消息发布已记录
  6. PUBREL:QoS 2消息流的第二部分,表示消息发布已释放
  7. PUBCOMP:QoS 2消息流的第三部分,表示消息发布完成
  8. SUBSCRIBE:客户端订阅某个主题
  9. SUBACK:对于SUBSCRIBE消息的确认
  10. UNSUBSCRIBE:客户端终止订阅的消息
  11. UNSUBACK:对于UNSUBSCRIBE消息的确认
  12. PINGREQ:心跳
  13. PINGRESP:确认心跳
  14. DISCONNECT:客户端终止链接前优雅地通知MQTT代理
相关文章
相关标签/搜索