zoukankan      html  css  js  c++  java
  • MQTT 简介

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

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

    【参考文章】:MQTT入门篇

    1. 简介

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

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

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

    2. 特点

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

    3. 应用场景

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

    4. 主题

      MQTT是通过主题对消息进行分类的,本质上就是一个UTF-8的字符串,不过可以通过反斜杠表示多个层级关系。主题并不需要创建,直接使用即可。

      主题还可以通过通配符进行过滤。

      /:用来表示层次,比如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代理

  • 相关阅读:
    vue-常用指令汇总
    vue-插槽和具名插槽
    vue-传值校验
    vue-动态组件
    vue-组件
    zend studio 快捷键收集
    php调试工具firephp
    zend studio插件
    MySQL各个版本区别
    PHP 中 Date 函数与实际时间相差8小时的解决方法
  • 原文地址:https://www.cnblogs.com/virgosnail/p/10789939.html
Copyright © 2011-2022 走看看