import Vue from 'vue' import Vuex from 'vuex' import socketurl from '@/api/socketurl.js' Vue.use(Vuex) const store = new Vuex.Store({ state: { //公共的变量,这里的变量不能随便修改,只能通过触发mutations的方法才能改变 timeoutObj: null, socketOpen: false, SOCKETURL: '', }, mutations: { scoket(state) { state.SOCKETURL = socketurl + uni.getStorageSync('id') state.socketOpen = false try { uni.connectSocket({ url: state.SOCKETURL }) uni.onSocketOpen(res => { console.log('webScoket连接已打开', res); state.socketOpen = true clearInterval(state.timeoutObj); state.timeoutObj = setInterval(() => { uni.sendSocketMessage({ data: 'ping', success(res) { console.log('正在发送心跳'); }, fail(err) { console.log('心跳发送失败,重新连接...'); state.socketOpen = true uni.connectSocket({ url: state.SOCKETURL }) } }) }, 1000) }) uni.onSocketError(err => { console.log('webScoket连接打开失败', err); if (err && err.code != 1000) { setTimeout(() => { state.socketOpen = true uni.connectSocket({ url: state.SOCKETURL }) }, 1000) } }) uni.onSocketClose(err => { console.log('webScoket连接关闭', err); if (err && err.code !== 1000) { setTimeout(() => { state.socketOpen = true uni.connectSocket({ url: state.SOCKETURL }) }, 1000) } }) } catch (e) { console.log(e); } }, }, actions: {} }) export default store