安装
npm install mqtt
引入
import mqtt from 'mqtt'
Vue.prototype.mqtt = mqtt
页面中使用
import mqtt from 'mqtt'
methods:{
initMQTT() {
const connectUrl = 'ws://13.60.15.29:8083/mqtt';
let client = mqtt.connect(connectUrl, {
clean: true,
connectTimeout: 4000,
reconnectPeriod: 1000,
clientId: 'camellia-web' + Date.now(),
username: 'camellia-web'
})
// 需要订阅的主题
const subscribe = ['/env_01/data/post', '/leak_01/data/post', '/smoke_01/data/post', '/dtu_01/data/post'];
//成功连接后触发的回调
client.on('connect', () => {
console.log('已经连接成功');
// 这里可以订阅多个主题
client.subscribe(subscribe, () => {
console.log(`订阅了主题 ${subscribe}`)
})
});
let _this = this;
// 当客户端收到一个发布过来的消息时触发回调
client.on('message', function (topic, message) {
// 这里有可能拿到的数据格式是Uint8Array格式,所以可以直接用toString转成字符串
let data = JSON.parse(message.toString());
// console.log("返回的数据:", topic);
// console.log(data);
if (topic === subscribe[0]) {
_this.envData.temper = data.temper_1 + "℃";
_this.envData.humidity = data.humidity_1 + "%RH";
_this.envData.co = data.co_1 + "ppm";
_this.envData.co2 = data.co2_1 + "ppm";
_this.envData.pressure = data.pressure_1 + "pa";
_this.envData.pm25 = data['pm2.5_1'] + "ug/m³";
_this.envData.pm10 = data.pm10_1 + "ug/m³";
_this.envData.noise = data.noise_1 + "dB";
}
// if (topic === subscribe[1]){
// $("#leak_1").text(data.ex_1 + '%LEL');
// $("#leak_2").text(data.ex_2 + '%LEL');
// $("#leak_3").text(data.ex_3 + '%LEL');
// $("#leak_4").text(data.ex_4 + '%LEL');
// }
});
// 连接断开后触发的回调
client.on("close", function () {
console.log("已断开连接")
});
},
}
版权声明:本文为weixin_42247720原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。