使用MQTTLens订阅设备时收到异常JSON消息含义及触发原因咨询
MQTT异常消息问题解答
消息本身含义
你接收到的原始消息U\u0002\u0001\u0001px属于非法格式的无效JSON消息,无实际业务含义:
\u0002、\u0001是ASCII标准里的不可见控制字符,分别对应「文本开始」「标题开始」控制符,不在标准JSON允许的字符串字符范围内- MQTTLens展示的转义后内容
Upx是工具自动过滤不可见控制字符后的结果,不是消息实际承载的业务内容
触发原因
该异常由消息发送端逻辑异常导致,和订阅端的解析逻辑无关:
- 物联网路由器的消息编码逻辑存在缺陷,未对发送的MQTT payload做UTF-8编码合法性校验,将内部使用的二进制控制帧直接当作JSON字符串发送
- 少量场景下也可能是路由器到MQTT broker的传输链路出现数据错包,导致正常的业务消息被混入控制字符
已确认结论
经排查验证,该异常的根因为物联网路由器发送非ASCII格式的消息导致,可直接对接路由器侧排查固件编码逻辑即可解决。
内容的提问来源于stack exchange,提问作者人生与我
相关产品推荐
相关产品推荐

