实例:使用MQTT进行交互

实例:使用MQTT进行交互,第1张

最近在着手研究使用网页控制硬件的交互过程,发现mqtt协议有很多种语言的封装,整个思路也很清晰,就是一个客户端进行发布和订阅+服务器中间代理的过程,于是开始学习使用MQTT框架搭建交互平台。
客户端使用了MQTTjs,服务器使用mosca(基于nodejs)。

QoS在MQTT中有(摘自 MQ 遥测传输 (MQTT) V31 协议规范 ):

MQTTjs只是支持了MQTT协议,并没有支持QoS,也就是说,只支持最低级别的“至多一次”(QoS0)。

在MQTT协议中,一个MQTT数据包由:固定头(Fixed header)、可变头(Variable header)、消息体(payload)三部分构成。
这里只了解消息体,固定头和可变头并不需要我们手动写。
payload消息体包含CONNECT、SUBSCRIBE、SUBACK、UNSUBSCRIBE四种类型的消息:

(1)Connect    与服务器建立连接。
(2)Disconnect    与服务器断开TCP/IP会话。
(3)Subscribe    订阅。
(4)UnSubscribe    取消订阅。
(5)Publish    发送消息请求,发送完成后返回应用程序线程。
二、实现(具体的API稍后呈现)

MQTT不存在上传和下发的定义,只有以topic为单位的推送和订阅。你的情况描述是服务器能看到推送的消息,说明网络、broker配置没有问题,要保证“服务器下发给客户端”能顺利实现的话请确认以下几点:

服务器端推送到的topic和客户端订阅的topic是一致的

本地设备开启了1883端口(或者你自定义的端口号),防火墙没有拦截

如果是自己写代码的话,客户端的on message回调函数里解析报文的逻辑是正确

      用户在使用CAT1模组MQTT协议对接自己的服务器,有时会遇到设备无法连接服务器问题(比如提示+ECMTCON:0,0,5连接服务器被拒绝,认证失败)。此时可以通过 标准的MQTT服务器 进行对比,因为用户自己的服务器一般加入校验信息,导致模组&MQTT服务器无法连接。

       Eclipse Mosquitto是一个开源消息代理,实现了MQTT协议版本31和311,这里使用该服务器进行测试。针对该服务器更详细的介绍也可以参考 >通过Cocoa Pods添加MQTTKit

MQTTKit在github上链接>根据接口文档订阅MQTT消息,没有接收到消息;

使用>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10929773.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-12
下一篇 2023-05-12

发表评论

登录后才能评论

评论列表(0条)

保存