如何解决MQTT.js subscription函数的回调未捕获错误消息
我正在使用MQTT.js订阅实时遥测数据。
client.on('connect',function () {
console.log('client connected');
client.subscribe('flespi/state/gw/devices/' + flespi_id + '/telemetry/position',{ qos: 0 },function (err,granted){
console.log(err.toString());
}
);
}
=>client connected
=>Uncaught TypeError: err is null
有时订阅未成功,所以我使用docs中指示的回调函数来检索错误。
我故意给了错误的订阅令牌,因此即使它连接了也无法订阅。问题是它说没有错误(err is null
)。那么我怎么知道错误是什么?
这里有一个类似的问题,只是用publish()
而不是subscribe()
:How to catch "access error" when publish inaccessible topic in mqtt.js?
解决方法
仔细阅读MQTT js docs并阅读一些有关实际MQTT消息的信息-理想情况下为the standard itself或HiveMQ的nice interpretation。 err
回调参数用于全局故障,例如传输层错误。如果客户端发送的主题名称格式错误,或者客户端没有足够的权限(这正是HiveMQ提到的内容),您将在granted
数组中以0x80代码发现失败。
如果特定主题在特定代理上尚不存在,则这不是MQTT中的错误。您可以订阅通配符,经纪人应如何处理?仅当向其发布第一条消息时,该主题才可能开始存在。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。