使用mosquitto代理在node.js服务器中获取mqtt消息头

时间:2018-04-13 05:36:51

标签: node.js mqtt mosquitto

如何使用mosquitto代理在mqtt消息中获取头代理或设备/浏览器详细信息。我的mqtt代码示例:

var mqtt = require('mqtt');
var client  = mqtt.connect('mqtt://127.0.0.1:1883',{
   username: 'xxxx',
   password: 'xxxx'
});
client.on('connect', function (err,done) {
    if(err){
        console.log(err)
    }else{
        console.log("Connected...")
        client.subscribe('test');
    }
})
client.on('message', function (topic, message) {
    // want to get the header details here.
})

1 个答案:

答案 0 :(得分:0)

您无法从MQTT消息中获取消息有效内容和主题以外的任何内容,因为消息格式中不包含其他信息。这是设计,在Pub / Sub消息传递中唯一重要的是主题和有效负载,而不是谁发送它。

on('message',function(){})回调可以采用第三个参数,即原始mqtt-packet对象。您可以在文档here中查看完整的数据列表。但唯一的额外信息是关于重复状态,qos以及是否保留了消息。

client.on('message',function(topic, message, mqtt-packet) {
...
});

如果您需要更多信息,则需要手动将其包含在客户自己发布的消息有效负载中。