【问题标题】:Node.Js MQTT BrokerNode.Js MQTT 代理
【发布时间】:2018-07-28 22:19:41
【问题描述】:

我在 node.js 中有以下代码。 它可以很好地连接到我在我的个人网站/服务器上设置的代理,并且能够发送和监听来自 server.js 的事件。

我的问题是它不监听从其他设备发送到代理的其他事件。如何确保下面的代码能够监听代理的所有事件?

谢谢

var mqtt = require('mqtt')
var MQTT_TOPIC = "homeGet/light";
var MQTT_ADDR = "mqtt://broker.example.org:80";
var MQTT_PORT = 80;
var client  = mqtt.connect(MQTT_ADDR,{clientId: "webClient", keeplive: 1, clean: false, debug:true});

var express = require('express');
var socket = require('socket.io');

//store the express functions to var app
var app = express();

//Create a server on localhost:5000
var server = app.listen(process.env.PORT || 5000);

//var server = app.listen((process.env.PORT || 3000, function(){
  //console.log("Express server listening on port %d in %s mode", this.address().port, app.settings.env);
//});
//host content as static on public
app.use(express.static('public'));

console.log("Node is running on port 5000...");

//MQTT
client.on('connect', function () {
    client.subscribe(MQTT_TOPIC, { qos: 2 });
    client.publish(MQTT_TOPIC, '1000');
});
client.on('message', function (topic, message) {
    // message is Buffer
    console.log(message.toString());
    client.end();
});
client.on('error', function(){
    console.log("ERROR")
    client.end()
})
client.on('offline', function() {
    console.log("offline");
});
client.on('reconnect', function() {
    console.log("reconnect");
});

【问题讨论】:

    标签: node.js mqtt broker


    【解决方案1】:

    您的client.on('message',function(message){...}) 回调中有client.end()

    这将在客户端收到第一条消息后立即断开连接。

    假设您从 npm 上的 mqtt 包的 README.md 中的示例中复制了此内容。 example 专门设置为只接收一条消息。

    【讨论】:

      猜你喜欢
      • 2014-04-23
      • 2018-07-06
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多