master
lld 2025-12-31 10:53:59 +08:00
parent 1fef05d415
commit 3529b83937
3 changed files with 42 additions and 33 deletions

67
App.vue
View File

@ -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
});
} }
);
} }
} }
} }

View File

@ -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'],

View File

@ -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;
} }
/** /**