Я делаю метод, который работает следующим образом: Когда я нажимаю кнопку, я хочу получать сообщения от topi c, на которые у меня есть подписка, и когда я нажимаю другую кнопку, я хочу закрыть соединение и не получать больше сообщений. Я думаю, что соединение закрывается правильно, потому что выполняется событие client.on ('close'), однако я продолжаю получать сообщения от topi c. Что я должен сделать, чтобы больше не получать сообщения?
startStop
- логическое значение, это правда, когда я хочу получать сообщения, и false, когда я хочу прекратить их получать. Что я делаю не так?
Вот мой код:
mqttClientSubscribeToTraceability(reguladorId, startStop) {
const tls = (Meteor.settings.mqttConfigClient.mqtt.port === 8883) || Meteor.settings.mqttConfigClient.mqtt.ca;
const client = mqtt.connect(`${tls ? 'mqtts' : 'mqtt'}://${Meteor.settings.mqttConfigClient.mqtt.host}:${Meteor.settings.mqttConfigClient.mqtt.port}`,
{ keyPath: Meteor.settings.mqttConfigClient.mqtt.key,
certPath: Meteor.settings.mqttConfigClient.mqtt.cert,
ca: [Meteor.settings.mqttConfigClient.mqtt.ca],
rejectUnauthorized: false
});
const topic = `in/1.0/trafficLights/${global.region}/${reguladorId}`;
const json = {};
if (startStop) {
client.on('connect', () => {
client.subscribe(topic);
});
client.on('message', (topic, message) => {
const msg = JSON.parse(message);
console.log('msg', msg);
});
} else {
client.end();
client.on('close', () => {
client.unsubscribe(topic);
});
}
}