Node.js 中每个 MQTT 主题的不同 `on('message')` 回调

Different `on('message')` callback per MQTT topic in Node.js

我用MQTT.js。是否可以为每个主题定义不同的回调?

例如,我订阅了主题 abc,并为每个主题创建了一个 on message 回调,如下所示:

client.on('message', 'a', cb)
client.on('message', 'b', cb)
client.on('message', 'b', cb)

如果没有,我该如何解决?欢迎任何解决方案。

不,这是不可能的。

您只需将 if/elseswitch 块添加到使用主题作为选择器的 on message 回调中。

例如

client.on('message', function(topic, message) {
  switch(topic) {
    case 'a':
      ...
      break;
    case 'b':
      ...
      break;
    default:
      ...
  }
})

或将回调函数存储在一个对象中,并使用主题作为键,例如

var callbacks = {}

callbacks["a"] = function(message) {...}

client.on('message', function(topic, message) {

  callbacks[topic](message)

})