使用 API 与 MQTT 发布者/订阅者通信
communicating with MQTT publisher / subscriber using an API
我有一个用 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 通过 Internet 与发布者/订阅者通信。
谢谢。
MQTT 是异步协议,HTTP 是同步协议。
可以将它们结合起来,但需要对两者都有很好的理解。
例如订阅的消息可以随时到达,因此假设您将其映射到 GET HTTP 请求,它应该是什么 return?
- 最后一条消息
- 阻止直到下一条消息(适当的超时)
- 之前的所有留言
您可以创建一个功能,在 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");
}
}
我有一个用 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 通过 Internet 与发布者/订阅者通信。
谢谢。
MQTT 是异步协议,HTTP 是同步协议。
可以将它们结合起来,但需要对两者都有很好的理解。
例如订阅的消息可以随时到达,因此假设您将其映射到 GET HTTP 请求,它应该是什么 return?
- 最后一条消息
- 阻止直到下一条消息(适当的超时)
- 之前的所有留言
您可以创建一个功能,在 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");
}
}