建议核对使用mqtt版本,我本人用的是mqtt 4.0.1版本
初始化mqtt
const mqtt = require('mqtt/dist/mqtt.js')
let option = {
username: 'XXX',
password: '123456',
}
//baseUrl==> 域名地址
this.mqttClient = mqtt.connect(baseUrl, option)
this.mqttClient.on('connect', (err) => {
this.subscribeAiWarn() //订阅事件, 可以订阅多个topic主题内容,在此不作过多陈述
this.receiveMessage() //响应事件
})
this.mqttClient.on("error", (err) => {
console.log("err=>", err)
})
订阅事件
订阅事件, 可以订阅多个topic主题内容,在此不作过多陈述;
subscribeAiWarn() {
let topic = baseUrl.VUE_APP_MQTT_AI_WARN_API + `${this.uav.hiveSn}/events`
this.mqttClient.subscribe(topic, (err) => {
if (!err) {
console.log("subscribe warn success");
} else {
//打印错误
console.log("err", err);
}
})
},
响应事件
通过订阅后的数据响应, 进行相对应的数据处理
receiveMessage() {
this.mqttClient.on("message", (topic, message) => {
let data = JSON.parse(message.toString())
switch (data.method) {
case 'aiWarn':
if (data && data.data) {
// 此处进行数据获取后的逻辑处理,依据业务做具体处理
.....
.....
.....
}
break
}
});