检查某个MQTT响应并执行一些操作

Check for a certain MQTT response and do something

本文关键字:执行 操作 响应 MQTT 检查      更新时间:2023-09-26

我有点卡在这里了。我想检查javascript中的特定MQTT响应并使用它做一些事情,但我的代码失败了。有人能帮忙吗?

应用程序接收的JSON字符串如下:

[{"key":"volume","value":"4"}]

我用下面的代码检查消息:

client.on('message', function (topic, message) {
  //message = JSON.parse(message);
  console.log('Data: ' + message);
  var strin = [{key:'volume', value: 4}]
  if(message == strin) {
    console.log('Specific');
  }else {
    // test
  }
})

但是当我通过POST向服务器发送特定消息时,我没有得到特定的响应…

有人有什么见解吗?

消息对象不只是有效载荷,它有更多的字段,你需要的是有效载荷,这将是一个字符串,而不是一个JSON对象开始:

client.on('message', function (topic, message) {   
  var payload = JSON.parse(message.payloadString);
  console.log('Data: ' + payload);
  var strin = [{key:'volume', value: 4}];
  if(payload == strin) {
    console.log('Specific');
  } else {
    // test
  }
})

在Javascript中进行深度对象比较也不容易,快速而肮脏的解决方案如下:

client.on('message', function (topic, message) {
    var payload = JSON.parse(message.payloadString);
    console.log('Data: ' + payload);
    var strin = [{key:'volume', value: 4}];
    if(JSON.stringify(payload) == JSON.stringify(strin)) {
        console.log('Specific');
    } else {
        // test
    }
})