[英]NodeJS MQTT in get/post callback not working.
MQTT 代碼在沒有 GET 回調函數的情況下運行時可以正常工作。 最初我在沒有事件模塊的情況下嘗試了這個。 一位專家告訴我嘗試使用事件和事件發射器。 MQTT Broker 運行良好。 如您所見,GET 回調中有一個 res.send。 該應用程序在網頁中返回“成功”。 對 POST 回調進行了同樣的嘗試。 我面臨同樣的問題。
var mqtt = require('mqtt');
var express = require('express');
var router = express.Router();
var events = require('events');
var eventEmitter = new events.EventEmitter();
var client = mqtt.connect(MQTT_ADDR,{protocolId: 'MQIsdp', protocolVersion: 3, connectTimeout:1000, debug:true});
var MQTT_TOPIC = "faultress/filter1/machine";
var MQTT_ADDR = "mqtt://192.168.1.5:1883";
var MQTT_PORT = 1883;
var myEventHandler = function ()
{
client.on('connect', function () {
client.subscribe(MQTT_TOPIC);
client.publish(MQTT_TOPIC, '1');
});
client.on('message', function (topic, message) {
// message is Buffer
console.log(message.toString());
client.end();
});
client.on('error', function(){
console.log("ERROR")
client.end()
});
console.log("success");
}
eventEmitter.on('mqttcall', myEventHandler);
router.get('/', (req, res) => {
eventEmitter.emit('mqttcall');
res.send("success");
});
module.exports = router;
問題仍然很模糊,但是如果您只想在每次調用get('/'...)
時發布1
那么以下代碼將起作用。
var mqtt = require('mqtt');
var express = require('express');
var router = express.Router();
var MQTT_TOPIC = "faultress/filter1/machine";
var MQTT_ADDR = "mqtt://192.168.1.5:1883";
var client = mqtt.connect(MQTT_ADDR,{protocolId: 'MQIsdp',
protocolVersion: 3, connectTimeout:1000, debug:true});
client.on('connect', function () {
client.publish(MQTT_TOPIC, '1');
});
client.on('error', function(){
console.log("ERROR");
});
router.get('/', (req, res) => {
client.publish(MQTT_TOPIC,"1");
res.send("success");
});
module.exports = router;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.