Как сделать так, чтобы клиент mqtt продолжал получать сообщения после подписки на тему? - PullRequest
0 голосов
/ 09 ноября 2019

Я подключился к серверу mqtt и подписался на тему. Клиент зависает, если я не использую mqtt.end (). Хотя я использую или не использую mqtt.end (), клиент получает сообщение только один раз. Можно ли заставить клиента продолжать слушать и продолжать получать сообщения с сервера? Буду признателен, если вы можете помочь. Заранее спасибо!

"use strict";

const mqtt = require('async-mqtt');

let startPolling = async (event, context) => {
  await run("tram", "#");
};

const run = async(mode, route) => {  
  const client = await mqtt.connectAsync('mqtts://mqtt.hsl.fi:8883/');
  console.log("Starting");
    try {
        let response = "";
        await client.subscribe(`/hfp/v2/journey/+/vp/${mode}/${route}`); 
        response = await getMessageAsync(client, "message");
        console.log(response.toString());
        await client.end();
        console.log("Done");
    } catch (e){
        console.log(e.stack);
        process.exit();
    }
}

const getMessageAsync = (client, ...args) => {
  return new Promise((resolve, reject) => {
    client.on(...args, (topic, message) => {
      resolve(message);
    });
  });
}

startPolling();
...