mqtt
parent
1fef05d415
commit
3529b83937
67
App.vue
67
App.vue
|
|
@ -1,12 +1,8 @@
|
||||||
<script>
|
<script>
|
||||||
import config from './config'
|
import config from './config'
|
||||||
import { getToken } from '@/utils/auth'
|
import { getToken } from '@/utils/auth'
|
||||||
import {
|
import { initMQTT, disconnectMQTT, getMQTTStatus, getMQTTClient } from '@/utils/mqtt'; // 替换为你的mqtt工具层路径
|
||||||
initMQTT,
|
|
||||||
disconnectMQTT,
|
|
||||||
getMQTTStatus,
|
|
||||||
manualReconnect
|
|
||||||
} from '@/utils/mqtt';
|
|
||||||
export default {
|
export default {
|
||||||
globalData: {
|
globalData: {
|
||||||
mqttClient: null, // 全局MQTT客户端实例
|
mqttClient: null, // 全局MQTT客户端实例
|
||||||
|
|
@ -20,7 +16,9 @@
|
||||||
clean: true
|
clean: true
|
||||||
},
|
},
|
||||||
mqttSubscribeList: [ // 全局基础订阅列表(所有页面都需要的主题)
|
mqttSubscribeList: [ // 全局基础订阅列表(所有页面都需要的主题)
|
||||||
{topic: 'dtu/#', qos: 0},
|
"dtu/864865085016294/up",
|
||||||
|
"dtu/864536071808560/up",
|
||||||
|
"dtu/864865085008135/up"
|
||||||
// {topic: 'system/status', qos: 1}
|
// {topic: 'system/status', qos: 1}
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
@ -31,18 +29,20 @@
|
||||||
},
|
},
|
||||||
onShow() {
|
onShow() {
|
||||||
console.log('应用切前台,检查MQTT连接');
|
console.log('应用切前台,检查MQTT连接');
|
||||||
const { isConnected } = getMQTTStatus();
|
const { isConnected, isManualDisconnect } = getMQTTStatus();
|
||||||
if (!isConnected) {
|
// 未连接且非手动断开 → 重新初始化连接
|
||||||
|
if (!isConnected && !isManualDisconnect) {
|
||||||
this.initGlobalMQTT();
|
this.initGlobalMQTT();
|
||||||
}
|
}
|
||||||
console.info("mqtt:",isConnected,getMQTTStatus);
|
console.info("mqtt:",isConnected,getMQTTStatus);
|
||||||
},
|
},
|
||||||
|
// 应用切后台时触发(最小化/锁屏/切换应用)
|
||||||
onHide() {
|
onHide() {
|
||||||
console.log('应用切后台,断开MQTT连接');
|
console.log('应用切后台,断开MQTT连接');
|
||||||
// 切后台主动断开(避免小程序后台占用资源)
|
// 手动断开连接(避免后台消耗资源)
|
||||||
disconnectMQTT();
|
disconnectMQTT(() => {
|
||||||
this.globalData.mqttClient = null;
|
console.log('MQTT断开完成,应用进入后台');
|
||||||
|
});
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// 初始化应用
|
// 初始化应用
|
||||||
|
|
@ -62,23 +62,32 @@
|
||||||
this.$tab.reLaunch('/pages/login')
|
this.$tab.reLaunch('/pages/login')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 初始化全局MQTT
|
/**
|
||||||
async initGlobalMQTT() {
|
* 初始化全局MQTT连接(核心方法)
|
||||||
try {
|
*/
|
||||||
// 调用工具类初始化连接(传入全局配置+全局订阅列表)
|
initGlobalMQTT() {
|
||||||
const client = await initMQTT(
|
const {mqttConfig, mqttSubscribeList} = this.globalData;
|
||||||
this.globalData.mqttConfig,
|
|
||||||
this.globalData.mqttSubscribeList
|
// 调用MQTT工具层的初始化方法
|
||||||
);
|
initMQTT(
|
||||||
// 挂载客户端到全局
|
mqttConfig,
|
||||||
this.globalData.mqttClient = client;
|
mqttSubscribeList,
|
||||||
// 通知所有页面:客户端已就绪,可绑定自定义事件
|
// 连接成功回调
|
||||||
uni.$emit('mqtt_client_ready', client);
|
(client) => {
|
||||||
console.log('全局MQTT初始化成功');
|
console.log('MQTT全局连接成功');
|
||||||
} catch (err) {
|
this.globalData.mqttClient = getMQTTClient();
|
||||||
console.error('全局MQTT初始化失败:', err);
|
},
|
||||||
uni.$emit('mqtt_init_fail', err);
|
// 连接失败回调
|
||||||
|
(err) => {
|
||||||
|
console.error('MQTT全局连接失败:', err);
|
||||||
|
// 可添加重试逻辑/用户提示
|
||||||
|
uni.showToast({
|
||||||
|
title: '设备通信异常',
|
||||||
|
icon: 'none',
|
||||||
|
duration: 3000
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -160,7 +160,7 @@ import UniDatetimePicker
|
||||||
from "../../uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue";
|
from "../../uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue";
|
||||||
import { findDtuDataByInfo } from "@/api/system/data";
|
import { findDtuDataByInfo } from "@/api/system/data";
|
||||||
|
|
||||||
import { getMQTTClientInstance, publishMQTT } from '@/utils/mqtt';
|
import { getMQTTClient } from '@/utils/mqtt';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
dicts: ['sys_data_map'],
|
dicts: ['sys_data_map'],
|
||||||
|
|
|
||||||
|
|
@ -153,8 +153,8 @@ export function disconnectMQTT(onComplete) {
|
||||||
* 获取MQTT客户端实例
|
* 获取MQTT客户端实例
|
||||||
* @returns {Client} MQTT客户端
|
* @returns {Client} MQTT客户端
|
||||||
*/
|
*/
|
||||||
export function getMQTTClientInstance() {
|
export function getMQTTClient() {
|
||||||
return client.instance;
|
return client;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue