MQTT控制---subscribe
连接服务端
客户端向服务端发送SUBSCRIBE报文用于创建一个或多个订阅。
固定报头
报头长度:2 Bytes

1、报头控制类型(0x82)
报文SUBSCRIBE控制报固定报头的第3、2、1、0位是保留位,必须设置为0,、0、1、0。
服务器必须将其它的任何值当做是不合法的并关闭连接。
2、剩余长度
等于可变报头的长度加上有效载荷的长度。
可变报头
可变报头包含客户端标识符,红色标记。(eg:82 09 00 02 00 04 30 37 35 35 00)
1、标识符 。
如上面的红色标记部分。
有效载荷
SUBSCRIBE报文的有效载荷包含一个主题过滤器列表,表示客户端想要订阅的主题。
每一个过滤器后面跟着一个字节的QoS。
SUBSCRIBE报文的有效载荷必须包含至少一对过滤器和QoS组合。
每对组合如下格式:

QoS的高6位字节保留。
响应
server收到SUBSCRIBE报文时,必须使用SUBACK报文响应。
SUBACK报文必须和等待确认的SUBSCRIBE报文有相同的报文标识符。
-----------------------------------------------------------------------------------------------------------------------
SUBACK-订阅确认
server发送给client的SUBACK,用于确认它已经收到并且正在处理SUBSCRIBE报文。
SUBACK报文包含一个返回码清单,指定了SUBSCRIBE请求的每个订阅被授予的最大QoS等级。
固定报头
报头格式描述如下:

剩余长度字段 = 可变报头的长度 + 有效载荷的长度
可变报头
可变报头包含标识符:(90 03 00 01 00)

有效载荷
有效载荷包含一个返回码清单,每个返回码对应等待确认的SUBSCRIBE报文中的一个主题过滤器。

允许的返回值:
0x00 - 最大QoS 0
0x01 - 成功,最大QoS 1
0x02 - 成功,最大QoS 2
0x80 - 失败
0x00、0x01、0x02、0x80之外的SUBACK返回码都是保留的,不能使用。
MQTT控制---subscribe的更多相关文章
- ESA2GJK1DH1K微信小程序篇: 测试微信小程序APUConfig给WI-Fi模块配网并绑定设备,并通过MQTT控制设备
前言(源码使用介绍在最后) 一,微信小程序篇小程序下载(该源码为这节测试源代码) 二.有多少人一直在期盼着小程序可以实现SmartConfig或者Airkiss的功能? 来吧!我的这种方式包您满意. ...
- MQTT控制---connect
连接服务端 客户端到服务端的第一个报文必须是CONNECT,且只能发送一次,发送的第二个connect报文当作违规处理并断开连接. 有效载荷包含一个或者多个编码的字段.包括客户端的唯一标识符,Will ...
- MQTT——控制报文格式
解控制报文格式是学习MQTT中,笔者认为最为重要的一个知识点.MQTT的所有行为都离不开他.控制报文可以分为三个部分组成,分别为:固定报头.可以变报头.有效载荷部分. 注意:上面的说的报文的类型.是指 ...
- ESA2GJK1DH1K基础篇: 测试APP扫描Air202上面的二维码绑定通过MQTT控制设备(兼容SIM800)
前言 此程序兼容SIM800 如果想绑定SIM800,请把其IMEI号,生成二维码,用手机APP扫描. 实现功能概要 APP通过扫描二维码获取GPRS设备的IMEI号,然后设置订阅的主题:device ...
- MQTT控制---pingreq
心跳请求 客户端向服务端发送PINGREQ报文用于: 在没有任何其他控制报文从client发给server时,告诉server,client还活着 请求server发送 响应确认它还活着 使用网络以确 ...
- ESA2GJK1DH1K微信小程序篇: 测试微信小程序扫描Air202上面的二维码绑定设备,并通过MQTT控制设备
前言 一,微信小程序篇小程序下载(该功能为小程序篇基础功能源码) 实现功能概要 微信小程序通过扫描GPRS上的二维码,绑定GPRS设备.然后使用小程序通过GPRS远程控制开发板上的继电器, 远程显示单 ...
- 转战物联网·基础篇08-例说MQTT协议各控制报文
前面讨论了MQTT协议的控制报文的格式,下面分别举例探讨各个控制报文的详细内容. 01.CONNECT – 连接服务端 客户端到服务端的网络连接建立后,客户端发送给服务端的第一个报文必须是CO ...
- 转战物联网·基础篇07-深入理解MQTT协议之控制报文(数据包)格式
在MQTT协议中,一个控制报文(数据包)的结构按照前后顺序分如下三部分: 结构名 中文名 解释说明 Fixed header 固定报头 报文的最开始部分,所有报文都包含这个部分 Variable ...
- MQTT 协议学习:006-订阅主题 与 对应报文(SUBSCRIBE、SUBACK、UNSUBSCRIBE、UNSUBACK)
背景 之前我们提到了怎么发布消息对应的报文:现在我们来看,订阅一个主题的报文是怎么样的. SUBSCRIBE - 订阅主题 客户端向服务端发送SUBSCRIBE报文用于创建一个或多个订阅.每个订阅注册 ...
随机推荐
- dataTables 插件学习整理
在项目中使用了dataTables 插件,学习整理一下. dataTables 的官方中文网站 http://www.datatables.club 引入文件: 所有的都要引入 jq文件 1. dat ...
- Activiti6-FormService(学习笔记)重要
设置流程定义文件: <?xml version="1.0" encoding="UTF-8"?> <definitions xmlns=&qu ...
- Supervisor安装与使用
一.简介 1.supervisor是什么 superviosr是一个Linux/Unix系统上进程监控和管理的工具,它由python编写,可以用pip安装.supervisor能将一个普通的命令行进程 ...
- chrome常用扩展程序汇总(程序员版)
chrome常用扩展程序之程序员版 1.chrome扩展程序 Chrome插件是一个由Web技术开发.用来增强浏览器功能的小程序,其实就是一个由HTML.CSS.JS.图片等静态资源组成的一个.crx ...
- WC2019游记
本来不打算写游记的,但后来想了想这么一次难忘的经历总该留下点痕迹吧...... DAY-1 走之前的最后一天,因为前一天晚上打了CF,所以早上9点才到机房.写了一道圆方树深深地体会到了来自仙人掌的恶意 ...
- 【UOJ448】【集训队作业2018】人类的本质 min_25筛
题目大意 给你 \(n,m\),求 \[ \sum_{i=1}^n\sum_{x_1,x_2,\ldots,x_m=1}^i\operatorname{lcm}(\gcd(i,x_1),\gcd(i, ...
- reload ans current configure command
reload ans current configure command enable_ans_license.conf enable ans license WL enable ans licens ...
- Equipment UVA - 1508(子集补集)
The Korea Defense and Science Institute, shortly KDSI, has been putting constant effort into newequi ...
- Python--面向对象初识
Python基础-初识面向对象 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函 ...
- java容器-Map
Map:基本思想是映射表(维护键-值对),HashMap,TreeMap,LinkedHashMap,ConcurrentHashMap等都是基于Map接口实现的map容器,他们特性不同,表现在效率, ...