69 lines
1.6 KiB
JavaScript
69 lines
1.6 KiB
JavaScript
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 |