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>
import config from './config'
import { getToken } from '@/utils/auth'
import {
initMQTT,
disconnectMQTT,
getMQTTStatus,
manualReconnect
} from '@/utils/mqtt';
import { initMQTT, disconnectMQTT, getMQTTStatus, getMQTTClient } from '@/utils/mqtt'; // mqtt
export default {
globalData: {
mqttClient: null, // MQTT
@ -20,7 +16,9 @@
clean: true
},
mqttSubscribeList: [ //
{topic: 'dtu/#', qos: 0},
"dtu/864865085016294/up",
"dtu/864536071808560/up",
"dtu/864865085008135/up"
// {topic: 'system/status', qos: 1}
],
},
@ -31,18 +29,20 @@
},
onShow() {
console.log('应用切前台检查MQTT连接');
const { isConnected } = getMQTTStatus();
if (!isConnected) {
const { isConnected, isManualDisconnect } = getMQTTStatus();
//
if (!isConnected && !isManualDisconnect) {
this.initGlobalMQTT();
}
console.info("mqtt",isConnected,getMQTTStatus);
},
// //
onHide() {
console.log('应用切后台断开MQTT连接');
//
disconnectMQTT();
this.globalData.mqttClient = null;
//
disconnectMQTT(() => {
console.log('MQTT断开完成应用进入后台');
});
},
methods: {
//
@ -62,23 +62,32 @@
this.$tab.reLaunch('/pages/login')
}
},
// MQTT
async initGlobalMQTT() {
try {
// +
const client = await initMQTT(
this.globalData.mqttConfig,
this.globalData.mqttSubscribeList
);
//
this.globalData.mqttClient = client;
//
uni.$emit('mqtt_client_ready', client);
console.log('全局MQTT初始化成功');
} catch (err) {
console.error('全局MQTT初始化失败', err);
uni.$emit('mqtt_init_fail', err);
/**
* 初始化全局MQTT连接核心方法
*/
initGlobalMQTT() {
const {mqttConfig, mqttSubscribeList} = this.globalData;
// MQTT
initMQTT(
mqttConfig,
mqttSubscribeList,
//
(client) => {
console.log('MQTT全局连接成功');
this.globalData.mqttClient = getMQTTClient();
},
//
(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";
import { findDtuDataByInfo } from "@/api/system/data";
import { getMQTTClientInstance, publishMQTT } from '@/utils/mqtt';
import { getMQTTClient } from '@/utils/mqtt';
export default {
dicts: ['sys_data_map'],

View File

@ -153,8 +153,8 @@ export function disconnectMQTT(onComplete) {
* 获取MQTT客户端实例
* @returns {Client} MQTT客户端
*/
export function getMQTTClientInstance() {
return client.instance;
export function getMQTTClient() {
return client;
}
/**