我有一个用 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 通过互联网与发布者/订阅者进行通信。
谢谢你。
MQTT 是异步协议,HTTP 是同步协议。
将它们结合起来是可能的,但需要对两者有很好的理解。
例如订阅消息可以随时到达,因此假设您将其映射到 GET HTTP 请求,它应该返回什么?
您可以在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");
}
}
Postman 现在支持 MQTT。您可以在这里了解更多信息。您可以连接到您的经纪人并订阅相关主题以及直接发布给他们。希望这有帮助!
免责声明:我目前为 Postman 工作。