MQTT协议-发布消息(服务器向客户端发送)
MQTT协议-发布消息(服务器向客户端发送)
发布消息报文组成:https://blog.csdn.net/weixin_46251230/article/details/129414158
在了解了发布信息的PUBLISH报文后,就可以分析出阿里云服务器向本地客户端发送的报文数据了
实验前需要在阿里云创建产品和设备,并创建简单的温度和湿度物模型:https://blog.csdn.net/weixin_46251230/article/details/128996719
1、用CONNECT报文连接阿里云
查看设备是否显示在线
2、订阅物模型主题
选择带有订阅权限的Topic类
将${deviceName}用自己的设备名称代替后,转为十六进制,计算出字节长度,在字节最后需要加上服务质量等级Qos,这里设置为00,不能忘记
加上固定报头和可变报头,组合成订阅主题报文
发送报文,收到阿里云应答,表示订阅成功
3、阿里云物模型发送数据
阿里云平台里选择在线调试,然后设置温度和湿度值,最后点击设置,服务器便下发数据到客户端
在网络调试助手可以看到阿里云发送的报文,将报文复制到文本文档进行分析
4、分析报文
报文的首字节是30,符合发布消息报文的固定报头字节,后面一个字节是AB,最高位为1,因此还有一个字节01来表示剩余长度,低位在前,高位在后,可以计算出长度为171,所以可以得到固定报头为30 AB 01
可变报头的首两个字节表示报头的长度,所以00 34是表示长度的,0x34转为十进制为52,因此就从34后开始数52个字节作为可变报头
将这52个字节转为ASCII可得到阿里云物模型订阅权限的Topic类:/sys/i6deo513xT1/Device01/thing/service/property/set
与上面发送的订阅主题报文的一致,说明分析正确
剩下的字节就全部是有效载荷,该部分首两个字节不是代表长度的,是真实数据,将其全部转为ASCII码便可得到JSON格式的数据,可看到温度值为20,湿度值为66,与一开始在阿里云平台上设置的一样,说明服务器向客户端发送的数据正确。
相关文章
- FinalShell详细使用教程:SSH链接Linux服务器
- Linux 服务器安全简明指南
- iOS开发网络篇—搭建本地服务器
- SVN服务器搭建和使用(三)
- 详解Linux服务器最大tcp连接数
- StompJS使用文档总结:如何创建stomp客户端、如何连接服务器、心跳机制、如何发送消息、如何订阅和取消订阅、事务、如何调试
- 【Unity3D日常开发】Unity3D中实现向Web服务器上传图片以及下载图片功能
- 戴尔-EMC将至强Phi服务器与Tesla GPU纳入PowerEdge
- RabbitMQ 3.6.7 发布,AMQP 消息服务器
- 十年CDP,专业治疗服务器“脑裂”问题
- 程序部署到服务器后非常慢!!!
- 搭建局域网SVN代码服务器
- 科研初体验之Linux服务器的入门使用,关于分配了Linux账号之后怎么用,以及怎么利用Linux服务器来跑我们的python代码
- Linux命令:查看服务器IP地址