我公司的硬件产品使用阿里云的LMQ 与服务端通信,硬件产品订阅“ares-test-mqtt”主题,服务端通过这个主题向设备发送数据,使用过程中发现2个问题。
问题1:硬件产品订阅“ares-test-mqtt”主题会出现失效的情况。通信过程如下:
(1) 硬件产品开机后,发送CONNECT连接MQTT服务器:
105700044d51545404c2003c001b4749445f544553545f41524553404040414130303030303030303800106f746b44716b545844746e73576f4245001c4f776d68346c4458345357383456585739653570517171534145633d
服务器回复CONNACK确认连接请求:
20 02 00 00
(2) 硬件产品发送SUBSCRIBE订阅主题:
82130001000e617265732d746573742d6d71747400
服务器回复SUBACK订阅确认:
90 03 00 01 00
上面的过程执行完,大部分情况硬件产品都可以接收“ares-test-mqtt”主题发来的数据,有时会出现执行完上面过程,但是收不到“ares-test-mqtt”主题消息。这种情况下MQTT心跳收发是正常的:
硬件产品发送:C0 00
服务器回复:D0 00
出现问题的硬件产品向服务端发送数据是正常的。
出现这个现象之后,在阿里云后台查看,该硬件产品已经订阅了“ares-test-mqtt”主题。
问题2:在一台硬件产品成功连接MQTT服务器后,另一个相同ClientId的硬件产品发送CONNECT连接MQTT服务器,之前的设备并没有被踢掉,还保持连接,并且两台硬件产品都可以订阅“ares-test-mqtt”主题,收到了主题消息。
阿里云的帮助文档是这样描述的:
提工单咯
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。