簡體   English   中英

獲取/發布回調中的 NodeJS MQTT 不起作用。

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM