From d4bffaa2419bc3e3d6b1af4a6314065c67a8cbc0 Mon Sep 17 00:00:00 2001
From: qingyiay <2386314947@qq.com>
Date: 星期一, 03 七月 2023 16:57:13 +0800
Subject: [PATCH] ws增加报错关闭重连功能
---
store/index.js | 188 ++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 178 insertions(+), 10 deletions(-)
diff --git a/store/index.js b/store/index.js
index 45b8230..d5d5ba6 100644
--- a/store/index.js
+++ b/store/index.js
@@ -1,20 +1,21 @@
import Vue from 'vue'
import Vuex from 'vuex'
+import { webSocketUrl } from '@/api/request.js'
Vue.use(Vuex)
// 鍔ㄦ�佸簳閮╰abbar
const userRoleTabbar = {
first: [{
pagePath: 'pages/tabbar-page/index-tabbar/index-tabbar',
- iconPath: '../../static/tabBar-icon/Gfayun.png',
- selectedIconPath: '../../static/tabBar-icon/Bfayun1.png',
+ iconPath: '../../static/tabBar-icon/home.png',
+ selectedIconPath: '../../static/tabBar-icon/homeblue.png',
text: '棣栭〉'
},
{
pagePath: 'pages/customer-page/customer-my/faYunstatistics/faYunstatistics',
iconPath: '../../static/tabBar-icon/statistics.png',
selectedIconPath: '../../static/tabBar-icon/statisticsactive.png',
- text: '鍙戣繍缁熻'
+ text: '缁熻'
},
{
pagePath: 'pages/tabbar-page/myPage-tabbar/myPage-tabbar',
@@ -25,15 +26,40 @@
],
second: [{
pagePath: 'pages/tabbar-page/index-tabbar/index-tabbar',
- iconPath: '../../static/tabBar-icon/Ghome.png',
- selectedIconPath: '../../static/tabBar-icon/Bhome.png',
+ iconPath: '../../static/tabBar-icon/home.png',
+ selectedIconPath: '../../static/tabBar-icon/homeblue.png',
text: '棣栭〉'
},
{
pagePath: 'pages/customer-page/customer-my/faYunstatistics/faYunstatistics',
iconPath: '../../static/tabBar-icon/statistics.png',
selectedIconPath: '../../static/tabBar-icon/statisticsactive.png',
- text: '鍙戣繍缁熻'
+ text: '缁熻'
+ },
+ {
+ pagePath: 'pages/tabbar-page/myPage-tabbar/myPage-tabbar',
+ iconPath: '../../static/tabBar-icon/Gmine10.png',
+ selectedIconPath: '../../static/tabBar-icon/Bmine57.png',
+ text: '鎴戠殑'
+ }
+ ],
+ three: [{
+ pagePath: 'pages/tabbar-page/index-tabbar/index-tabbar',
+ iconPath: '../../static/tabBar-icon/home.png',
+ selectedIconPath: '../../static/tabBar-icon/homeblue.png',
+ text: '棣栭〉'
+ },
+ {
+ pagePath: 'pages/driver-page/driver-index/bill-of-lading-details/selectOrderPlan/selectOrderPlan',
+ iconPath: '../../static/tabBar-icon/checking.png',
+ selectedIconPath: '../../static/tabBar-icon/checkingblue.png',
+ text: '楠岃川'
+ },
+ {
+ pagePath: 'pages/customer-page/customer-my/faYunstatistics/faYunstatistics',
+ iconPath: '../../static/tabBar-icon/statistics.png',
+ selectedIconPath: '../../static/tabBar-icon/statisticsactive.png',
+ text: '缁熻'
},
{
pagePath: 'pages/tabbar-page/myPage-tabbar/myPage-tabbar',
@@ -56,7 +82,30 @@
// 鍏ㄥ眬weihousecode
globalweighHouseCode: '',
// 鍏ㄥ眬绾㈠鐘舵��
- globalinfraredStatus: false
+ globalinfraredStatus: false,
+ // 鍙告満淇敼涓汉淇℃伅
+ globaluserInfo: {
+ phone: '',
+ name: '',
+ username: '',
+ type: 3,
+ idCard: '',
+ carNo: '',
+ carImg: '',
+ drivingImg: '',
+ axleNum: '',
+ weight: '',
+ userId: ''
+ },
+ globalisconnect: true,
+ globalisUploadimg: false,
+ globalisLogin: false,
+ socketTask: null,
+ websocketData: null, // 瀛樻斁浠庡悗绔帴鏀跺埌鐨剋ebsocket鏁版嵁
+ globalIntervalId: null,
+ is_open_socket: false, //閬垮厤閲嶅杩炴帴
+ connectNum: 1, //閲嶈繛娆℃暟,
+ reconnectTimeOut: null
},
mutations: {
lengthchange(state, payload) {
@@ -68,11 +117,14 @@
// 璁剧疆搴曢儴鏍�
setUserTabbar(state, roleType) {
state.roleType = roleType
- if (roleType == 1) {
+ if (roleType === 1) {
state.userTabbar = userRoleTabbar.first
uni.setStorageSync('userTabbar', state.userTabbar)
- } else if (roleType == 2 || roleType == 3) {
+ } else if (roleType === 2 || roleType === 3) {
state.userTabbar = userRoleTabbar.second
+ uni.setStorageSync('userTabbar', state.userTabbar)
+ } else if (roleType === 4) {
+ state.userTabbar = userRoleTabbar.three
uni.setStorageSync('userTabbar', state.userTabbar)
}
},
@@ -93,8 +145,124 @@
// 鏀瑰彉绾㈠鐘舵��
changeinfraredStatus(state, payload) {
state.globalinfraredStatus = payload
+ },
+ changeuserInfo(state, payload) {
+ state.globaluserInfo = payload
+ },
+ // 鏀圭増鍏ㄥ眬websocket鐘舵��
+ changeisconnect(state, payload) {
+ state.globalisconnect = payload
+ },
+ changeisUploadimg(state, payload) {
+ state.globalisUploadimg = payload
+ },
+ changeisLogin(state, payload) {
+ state.globalisLogin = payload
+ console.log(state.globalisLogin, '鍏ㄥ眬鐧诲綍鐘舵�佹敼鍙樹簡')
+ },
+ setWebsocketData(state, data) {
+ state.websocketData = data
+ },
+ // 鏀瑰彉閲嶈繛鐘舵��
+ changereconnectState(state, payload) {
+ state.is_open_socket = payload
+ },
+ // 鏀瑰彉閲嶈繛娆℃暟
+ changereconnectNum(state, payload) {
+ state.connectNum = payload
+ },
+ },
+ actions: {
+ websocketInit({ state, dispatch, commit }) {
+ let wsUrl = `${webSocketUrl}?access_token=${uni.getStorageSync('token')}`
+ state.socketTast = uni.connectSocket({
+ url: wsUrl,
+ header: { CLIENT_TOC: 'Y' },
+ success: res => {
+ console.log(res, 'socketSuccess')
+ if (res.errMsg === 'connectSocket:ok') {
+ commit('changeisconnect', true)
+ commit('changereconnectState', true)
+ }
+ },
+ fail: res => {
+ console.log(res, 'socketFail')
+ console.log('ws澶辫触');
+ commit('changereconnectState', false)
+ dispatch('reconnect')
+ }
+
+ })
+ state.socketTast.onOpen(() => dispatch('websocketOnOpen'))
+ state.socketTast.onMessage(result => dispatch('websocketOnMessage', result.data))
+ state.socketTast.onClose(e => dispatch('websocketOnClose', e))
+ state.socketTast.onError(e => dispatch('websocketOnError', e))
+ },
+ websocketOnOpen({ state, commit }) {
+ console.log('ws鎵撳紑')
+ clearInterval(state.reconnectTimeOut)
+ clearInterval(state.globalIntervalId)
+ state.globalIntervalId = setInterval(() => {
+ state.socketTast.send({
+ data: JSON.stringify({ type: 'ping' }),
+ success(e) {
+ console.log(e, '鍙戦�佸績璺虫垚鍔�')
+ }
+ })
+ }, 30000)
+ },
+ websocketOnClose({ state, commit, dispatch }, e) {
+ if (!state.socketTast) return
+ console.log('ws鍏抽棴', e)
+ state.socketTast.close(e => {
+ commit('changeisconnect', false)
+ })
+ clearInterval(state.globalIntervalId)
+ clearInterval(state.reconnectTimeOut)
+ state.socketTast = null
+ commit('changereconnectState', false)
+ if (state.connectNum < 6) {
+ dispatch('reconnect')
+ } else {
+ commit('changereconnectNum', 1)
+ }
+
+ },
+ websocketOnError({ state, commit, dispatch }, e) {
+ // 濡傛灉閲嶈繛鐘舵�佷负false鍒欎笉杩涜閲嶈繛锛屼负true鎵嶄細
+ console.log('ws鎶ラ敊', e)
+ clearInterval(state.globalIntervalId)
+ clearInterval(state.reconnectTimeOut)
+ state.socketTast = null
+ commit('changereconnectState', false)
+ if (state.connectNum < 6) {
+ uni.showToast({
+ title: `杩炴帴澶辫触锛屾灏濊瘯绗�${state.connectNum}娆¤繛鎺,
+ icon: 'none'
+ })
+ let num = 1;
+ num++;
+ commit('changereconnectNum', num)
+ dispatch('reconnect')
+ } else {
+ commit('changereconnectNum', 1)
+ }
+ },
+ // 鎺ユ敹鏁版嵁
+ websocketOnMessage({ state, commit }, result) {
+ commit('setWebsocketData', result)
+ },
+ // 閲嶆柊杩炴帴
+ reconnect({ state, commit, dispatch }) {
+ console.log(state.is_open_socket, '閲嶆柊杩炴帴socket鐘舵��');
+ clearInterval(state.globalIntervalId)
+ if (!state.is_open_socket) {
+ state.reconnectTimeOut = setInterval(() => {
+ dispatch('websocketInit')
+ }, 5000)
+ }
}
}
})
-export default store
+export default store
\ No newline at end of file
--
Gitblit v1.9.1