使用MQTT JS订阅时消息重复

时间:2019-08-16 08:23:07

标签: javascript node.js mqtt

我目前正在尝试Thingspeak,它们为开发人员提供了使用MQTT协议订阅数据的功能。

但是当我尝试实现时,即使我不发布任何消息,数据也不会停止订阅。

channels/channel/subscribe/fields/field1/key: 2
channels/channel/subscribe/fields/field1/key: 2
channels/channel/subscribe/fields/field1/key: 2
channels/channel/subscribe/fields/field1/key: 2
channels/channel/subscribe/fields/field1/key: 2
channels/channel/subscribe/fields/field1/key: 2
channels/channel/subscribe/fields/field1/key: 2
channels/channel/subscribe/fields/field1/key: 2
channels/channel/subscribe/fields/field1/key: 2
channels/channel/subscribe/fields/field1/key: 2
channels/channel/subscribe/fields/field1/key: 2
channels/channel/subscribe/fields/field1/key: 2
channels/channel/subscribe/fields/field1/key: 2
channels/channel/subscribe/fields/field1/key: 2
channels/channel/subscribe/fields/field1/key: 2

我的JavaScript代码是:

let client = mqtt.connect('mqtt://mqtt.thingspeak.com', {
    username: process.env.MQTT_USERNAME,
    password: process.env.MQTT_PASSWORD,
    clientId: 'TSC-' + Math.random().toString(16).substr(2, 8) + '-' + Math.random().toString(16).substr(2, 8),
    protocolId: 'MQTT',
    keepalive: 1,
    reconnectPeriod: 100 * 1
  })
client.subscribe('channels/channel/subscribe/fields/field1/key', { qos: 0 })
client.on('message', (topic, payload) => {
  console.log(`${topic}: ${payload}`)
})

我想念什么吗?还是主机故障?谢谢。

1 个答案:

答案 0 :(得分:0)

您似乎可能需要重新连接多次并在每次连接时都进行订阅。首次订阅时,ThingSpeak代理返回最后一个值。