需要标识符是什么错误_阿里云物联网平台使用心得(23)MQTT协议详解报文标识符...

e34a14a5f9f58b41d1e8a6724c4809e2.png

题目

大家好,超子又和大家见面了,超子我能力有限,水平不高,有什么错误的地方,欢迎板砖。超子上一篇文章留了一个问题没说,就是报文标识符的概念。报文标识符在许多的报文中都要用到,按照3.1.1的协议标准要求,它必须是一个非零值,占用2个字节,范围0x0001~0xFFFF。超子给大家总结一下,到底有哪些报文需要用到这2个字节的报文标识符 。

SUBSCRIBE报文:用于订阅一个或多个Topic的报文

SUBACK报文:服务器用于回复SUBSCRIBE订阅Topic报文成功与否的报文

UNSUBSCRIBE报文:取消订阅Topic的报文

UNSUBACK报文:服务器用于回复UNSUBSCRIBE取消订阅Topic报文成功与否的报文

PUBLISH报文:发布和推送数据报文。只有服务质量等级1和2的才需要,等级0的不用报文标识符

PUBACK报文:服务等级1,确认签收数据的报文

PUBREC报文:服务等级2,第1次确认签收数据的报文

PUBREL报文:服务等级2,再次请求确认的报文

PUBCOMP报文:服务等级2,第2次确认签收数据的报文

除了SUBSCRIBE订阅报文以外,其他的报文,超子还没有介绍,不过不用担心,目前我们只要理解报文标识符的作用和意义即可,只有先了解了报文标识符的概念,才能对具体的报文有更好的认识。

理论上,我们可以将报文标识符从1开始,每当发送过一个包含有报文标识符的报文之后,报文标识符加1,直到0xFFFF后,往复循环。这里要特别注意一个问题,就是等级1和2如果没有签收数据,发送一方需要稍作延时后并启动重发,那么重发的时候,报文标识符还要用以前的,不能用新的报文标识符。当然以上的情形不是硬性要求的,假设我就不想变,报文标识符就一直用0x00 0x01,也没有问题,服务器不会认为是错误,而断开连接,下面我举个例子大家就能明白报文标识符的作用了 。

假设我连续发送3个SUBSCRIBE报文,订阅3个Topic,分别是A、B、C,3个报文都用0x00 0x01的报文标识符,假设其中2个成功,1个失败。服务器会回复SUBACK报文,通知我们订阅成功与否,大家现在还没有学习SUBACK报文,不过不影响我们的理解。SUBACK报文的回复顺序和我们发送SUBSCRIBE报文的顺序没有任何关系,这点非常关键,能直接体现出报文标识符的作用。SUBACK报文回复 0x00 0x01成功 0x00 0x01失败 0x00 0x01成功。看到这大家就明白了,因为顺序没有对应关系,而且报文标识符又一样,所以我们根本无法区别出A、B、C这3个Topic哪两个成功,哪一个失败了。

如果我们发送的时候,A的报文标识符是0x00 0x01,B的是0x00 0x02,C的是0x00 0x03,那么SUBACK报文回复0x00 0x02成功 0x00 0x01失败 0x00 0x03成功,如此一来我们就能知道A失败,B和C成功。

好了,对于报标识符,超子就讲到这里,后面还会继续介绍其他的报文,当具体某个报文用到报文标识符的时候,超子会再介绍一下

阿里云物联网平台是一种基于云计算的物联网解决方案,提供了多种相关技术和服务。其中,MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,通常用于物联网设备之间的通信。 在阿里云物联网平台中,MQTT可以通过3个通道进行数据传输。这三个通道可以分别用于传输设备状态、设备属性和设备事件。通过这样的数据传输,物联网平台可以帮助用户实现对设备的监控、控制、数据采集和分析等功能。 具体来说,MQTT协议是一种基于发布/订阅机制的协议。物联网设备可以通过订阅某个主题,以接收相关的数据消息。同时,设备也可以发布自己的数据消息到指定的主题,供其他设备或应用程序订阅和使用。 在物联网开关领域,MQTT协议可以发挥重要作用。物联网开关是一种可以连接智能设备的装置,例如灯光开关、电源开关等。通过采用MQTT协议,物联网开关可以与其他物联网设备进行通信,接收和发送相关的控制消息。这样的交互可以实现对设备的智能控制和远程管理,提高了设备的便捷性和智能化水平。 总之,阿里云物联网平台MQTT协议,提供了一种高效的物联网设备通信方式,通过mqtt 3路数据,mqtt协议和物联网开关的结合,可以实现对设备的智能控制和数据传输,为物联网应用提供了强大的技术支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值