我正在使用带有 mqtt.js 的 node.js 和 mosquitto 代理创建一个项目。
在 mosquitto 配置文件中,我设置了 pwfile、aclfile 来控制哪个用户可以访问哪个主题。
如果用户名、密码、发布主题和订阅主题正确,则一切正常。
但是,如果我将发布主题更改为无法访问的主题,似乎成功发布了主题,mqtt.js 中没有任何错误,但消息从未发布。
发布或订阅无法访问的主题时是否有捕获错误的方法?
https://github.com/mqttjs/MQTT.js/blob/master/README.md#publish https://github.com/mqttjs/MQTT.js/blob/master/README.md#publish
我尝试使用 qos=1 捕获回调函数中的错误,但 mosquitto 代理似乎没有任何错误地确认客户端。
当然,消息没有发布到该主题,因为该客户端没有该主题的访问权限。
client.publish('inaccessible_topic', 'hello world', {qos: 1}, (err) => {
if (err) console.log('error occur: ', err);
else console.log('message successfully publish');
});
我预计 mosquitto 会返回某种错误(error occur: <error message>
)当发布到无法访问的主题时,但它没有(message sucessfully publish
).
我想知道是否有可能捕获这样的错误。 mosquitto 是否处理此类错误,如果是,如何使用 mqtt.js 捕获此类错误?