【问题标题】:communicating with MQTT publisher / subscriber using an API使用 API 与 MQTT 发布者/订阅者通信
【发布时间】:2021-08-26 16:24:30
【问题描述】:

我有一个用 Node JS 编写的 MQTT 发布者和订阅者。

我想知道是否有可能以 API 的形式使用它,我们可以使用 PostMan 连接并发布消息。

这是我的发布者代码:

Publisher.js:

const mqtt = require('mqtt');
let client = mqtt.connect('mqtt://broker.hivemq.com');


client.on('connect', () =>{
    console.log(`MQTT Client Connected Successfully!`);
    client.publish('connected', `${true}`);
});

这是我的订阅者代码: 订阅者.js:

const mqtt = require('mqtt');
let client = mqtt.connect('mqtt://broker.hivemq.com');

let connected = false;


client.on('connect', () =>{
    console.log(`MQTT Client Connected Successfully!`);
    client.subscribe('connected');
});



client.on('message', (topic, message) =>{
    if(topic === "connected"){
      return handleGarageConnected(message);
    }

    console.log("No Handler for Topic %s", topic);

});

我希望能够使用我创建的 API 通过 Internet 与发布者/订阅者进行通信。

谢谢。

【问题讨论】:

    标签: postman mqtt iot paho


    【解决方案1】:

    MQTT 是异步协议,HTTP 是同步的。

    可以将它们结合起来,但需要对两者都有很好的了解。

    例如订阅的消息可以随时到达,因此假设您将其映射到 GET HTTP 请求,它应该返回什么?

    • 最后一条消息
    • 阻塞直到下一条消息(适当的超时)
    • 以前的所有消息

    【讨论】:

      【解决方案2】:

      您可以在 publisher.js 中创建一个在所需主题上发布的函数并将其导出。这样您就可以在任何其他模块中使用。

      Publisher.js

      const mqtt = require('mqtt');
      let client = mqtt.connect('mqtt://broker.hivemq.com');
      
      
      client.on('connect', () =>{
          console.log(`MQTT Client Connected Successfully!`);
          client.publish('connected', `${true}`);
      });
      
      module.exports = {
      
          publishTopic : function(payload){
            client.publish('randomTopic');
          }
      }
      

      您可以为您的 APIS 创建另一个文件,您可以像这样导入导出的函数,

      const mqttWrapper = require('./Publisher.js');
      
      module.exports = {
          randomApi : function (req, res) {
              mqttWrapper.publishTopic("message");   
          }    
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-17
        • 2016-12-14
        • 2019-08-03
        相关资源
        最近更新 更多