使用 API 与 MQTT 发布者/订阅者通信

问题描述 投票:0回答:3

我有一个用 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}`);
});

这是我的订阅者代码: Subscriber.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 通过互联网与发布者/订阅者进行通信。

谢谢你。

postman mqtt iot paho
3个回答
1
投票

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

将它们结合起来是可能的,但需要对两者有很好的理解。

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

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

0
投票

您可以在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");   
    }    
}

0
投票

Postman 现在支持 MQTT。您可以在这里了解更多信息。您可以连接到您的经纪人并订阅相关主题以及直接发布给他们。希望这有帮助!

免责声明:我目前为 Postman 工作。

© www.soinside.com 2019 - 2024. All rights reserved.