哪个棋牌好

<small id='bu272'></small><noframes id='bu272'>

  • <tfoot id='bu272'></tfoot>

      <legend id='bu272'><style id='bu272'><dir id='bu272'><q id='bu272'></q></dir></style></legend>
      <i id='bu272'><tr id='bu272'><dt id='bu272'><q id='bu272'><span id='bu272'><b id='bu272'><form id='bu272'><ins id='bu272'></ins><ul id='bu272'></ul><sub id='bu272'></sub></form><legend id='bu272'></legend><bdo id='bu272'><pre id='bu272'><center id='bu272'></center></pre></bdo></b><th id='bu272'></th></span></q></dt></tr></i><div id='bu272'><tfoot id='bu272'></tfoot><dl id='bu272'><fieldset id='bu272'></fieldset></dl></div>

          <bdo id='bu272'></bdo><ul id='bu272'></ul>

          1. <li id='bu272'><abbr id='bu272'></abbr></li>

                  <dfn id='qyfy7'><optgroup id='qyfy7'></optgroup></dfn><tfoot id='qyfy7'><bdo id='qyfy7'><div id='qyfy7'></div><i id='qyfy7'><dt id='qyfy7'></dt></i></bdo></tfoot>

                  <ul id='qyfy7'></ul>

                  • <small id='7nlxv'></small><noframes id='7nlxv'>

                  • <tfoot id='7nlxv'></tfoot>

                      <legend id='7nlxv'><style id='7nlxv'><dir id='7nlxv'><q id='7nlxv'></q></dir></style></legend>
                      <i id='7nlxv'><tr id='7nlxv'><dt id='7nlxv'><q id='7nlxv'><span id='7nlxv'><b id='7nlxv'><form id='7nlxv'><ins id='7nlxv'></ins><ul id='7nlxv'></ul><sub id='7nlxv'></sub></form><legend id='7nlxv'></legend><bdo id='7nlxv'><pre id='7nlxv'><center id='7nlxv'></center></pre></bdo></b><th id='7nlxv'></th></span></q></dt></tr></i><div id='7nlxv'><tfoot id='7nlxv'></tfoot><dl id='7nlxv'><fieldset id='7nlxv'></fieldset></dl></div>

                          <bdo id='7nlxv'></bdo><ul id='7nlxv'></ul>

                        1. MQTT协议简要介绍

                          时间:2014年11月20日 点击:1422

                          MQTT - MQ Telemetry Transport


                          • 轻量级的 machine-to-machine 通信协议。
                          • publish/subscribe模式。
                          • 基于TCP/IP。
                          • 支持QoS。
                          • 适合于低带宽、不可靠连接、嵌入式设备、CPU内存资源紧张。
                          • 是一种比较不错的Android消息推送方案。
                          • FacebookMessenger采用了MQTT。
                          • MQTT有可能成为物联网的重要协议。
                          MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:
                          1、使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;
                          2、对负载内容屏蔽的消息传输;
                          3、使用 TCP/IP 提供网络连接;
                          4、有三种消息发布服务质量:
                            • “至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
                            • “至少一次”,确保消息到达,但消息重复可能会发生。
                            • “只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
                          5、小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量;
                          6、使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制

                          消息体

                           
                           
                          bit 7 6 5 4 3 2 1 0
                          byte 1 Message Type DUP flag QoS level RETAIN
                          byte 2 Remaining Length
                           

                          MessageType

                          Mnemonic Enumeration Description
                          Reserved 0 Reserved
                          CONNECT 1 Client request to connect to Server
                          CONNACK 2 Connect Acknowledgment
                          PUBLISH 3 Publish message
                          PUBACK 4 Publish Acknowledgment
                          PUBREC 5 Publish Received (assured delivery part 1)
                          PUBREL 6 Publish Release (assured delivery part 2)
                          PUBCOMP 7 Publish Complete (assured delivery part 3)
                          SUBSCRIBE 8 Client Subscribe request
                          SUBACK 9 Subscribe Acknowledgment
                          UNSUBSCRIBE 10 Client Unsubscribe request
                          UNSUBACK 11 Unsubscribe Acknowledgment
                          PINGREQ 12 PING Request
                          PINGRESP 13 PING Response
                          DISCONNECT 14 Client is Disconnecting
                          Reserved 15 Reserved
                           
                          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 value bit 2 bit 1 Description
                          0 0 0 At most once Fire and Forget <=1
                          1 0 1 At least once Acknowledged delivery >=1
                          2 1 0 Exactly once Assured delivery =1
                          3 1 1 Reserved
                          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应该立刻丢弃任何会话状态信息。

                          赞助商链接

                          热门内容

                          相关内容

                          联系我们

                          联系方式

                          美女棋牌游戏 - MQTT协议简要介绍 - 智动软件 斗牛牌 乐呵棋牌---首页_Welcome 火石互娱棋牌游戏-Welcome 牛牛手机游戏 - MQTT协议简要介绍 - 智动软件