Я создаю проект с использованием node.js с mqtt.js и брокером mosquitto.В конфигурационном файле mosquitto я установил pwfile, aclfile, чтобы контролировать, к какой теме можно обратиться, к какому пользователю.
Все работает нормально, если имя пользователя, пароль, тема публикации и тема подписки верны.
Но если я изменю тему публикации на недоступную тему, она, кажется, успешно публикует тему без ошибок в mqtt.js, но сообщение никогда не публикуется.
Есть ли способ отловить ошибку, когдаопубликовать или подписаться на недоступную тему?
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?