mqtt实现全局链接优化

master
xce 2026-01-06 00:15:34 +08:00
parent cb1e0a4d40
commit 2b69bf0d33
3 changed files with 23 additions and 5 deletions

25
App.vue
View File

@ -15,12 +15,25 @@ export default {
onLaunch: function() {
this.initApp()
mqttUtil.disconnectMqtt()
// ========== H5localStorage ==========
const savedSubscribeList = uni.getStorageSync('mqtt_subscribe_list')
if (savedSubscribeList && savedSubscribeList.length > 0) {
this.globalData.mqtt.subscribeList = savedSubscribeList
}
},
onShow() {
console.log('小程序切前台/首次显示')
const token = getToken() || this.globalData.mqtt.token
if (token) {
console.info("token存在mqtt重新连接中。。")
// globalData
if (this.globalData.mqtt.subscribeList.length === 0) {
const savedSubscribeList = uni.getStorageSync('mqtt_subscribe_list')
if (savedSubscribeList && savedSubscribeList.length > 0) {
this.globalData.mqtt.subscribeList = savedSubscribeList
}
}
this.reconnectMqtt()
}
},
@ -29,13 +42,11 @@ export default {
const mqttState = mqttUtil.getMqttState()
if (mqttState.isConnected) {
this.globalData.mqtt.subscribeList = mqttState.subscribeList
// ========== localStorage ==========
uni.setStorageSync('mqtt_subscribe_list', this.globalData.mqtt.subscribeList)
mqttUtil.disconnectMqtt()
}
},
onUnload() {
console.log('小程序销毁')
mqttUtil.disconnectMqtt()
},
methods: {
//
initApp() {
@ -76,12 +87,16 @@ export default {
if (subscribeList.length > 0) {
mqttUtil.updateSubscribeList(subscribeList)
console.log('恢复MQTT订阅列表', subscribeList)
// ========== localStorage ==========
uni.setStorageSync('mqtt_subscribe_list', subscribeList)
}
},
loginSuccess(token, subscribeList) {
this.globalData.mqtt.hasLogin = true
this.globalData.mqtt.token = token
this.globalData.mqtt.subscribeList = subscribeList || []
// ========== localStorage ==========
uni.setStorageSync('mqtt_subscribe_list', subscribeList || [])
this.reconnectMqtt()
console.log('登录成功MQTT已初始化')
},
@ -92,6 +107,8 @@ export default {
token: '',
subscribeList: []
}
// ========== localStorage ==========
uni.removeStorageSync('mqtt_subscribe_list')
console.log('登出成功MQTT已断开')
}
}

View File

@ -389,6 +389,7 @@ export default {
ackMessage(topic, payload) {
// 1. dtu/xxx/up
if (topic !== this.mqttConfig.subscribeTopic) return;
// console.log(`topic=${topic}message=${payload}`)
// 2.
let msgData = {};

View File

@ -95,7 +95,7 @@ export function connectMqtt() {
// 全局接收消息,转发给页面自定义回调
mqttState.client.on('message', (topic, payload) => {
const message = payload.toString()
console.log(`收到MQTT消息topic=${topic}message=${message}`)
// console.log(`收到MQTT消息topic=${topic}message=${message}`)
if (typeof mqttState.onMessageCallback === 'function') {
mqttState.onMessageCallback(topic, message)
}