95 lines
3.7 KiB
JavaScript
95 lines
3.7 KiB
JavaScript
|
import Vue from 'vue'
|
|||
|
import Vuex from 'vuex'
|
|||
|
import {loginUserId} from "../common/tool";
|
|||
|
Vue.use(Vuex)
|
|||
|
export default new Vuex.Store({
|
|||
|
state: {
|
|||
|
socketTask: null,
|
|||
|
isOpenSocket:false,
|
|||
|
eventlist: {},
|
|||
|
unread: []
|
|||
|
},
|
|||
|
mutations: {
|
|||
|
WEBSOCKET_INIT(state, url) {
|
|||
|
// 创建一个this.socketTask对象【发送、接收、关闭socket都由这个对象操作】
|
|||
|
state.socketTask = uni.connectSocket({
|
|||
|
url,
|
|||
|
// 【非常重要】必须确保你的服务器是成功的,如果是手机测试千万别使用ws://127.0.0.1:9099【特别容易犯的错误】
|
|||
|
success(data) {
|
|||
|
state.isOpenSocket = false;
|
|||
|
// console.log("websocket连接成功");
|
|||
|
},
|
|||
|
});
|
|||
|
// 消息的发送和接收必须在正常连接打开中,才能发送或接收【否则会失败】
|
|||
|
state.socketTask.onOpen((res) => {
|
|||
|
// console.log("WebSocket连接正常打开中...!");
|
|||
|
state.isOpenSocket = true;
|
|||
|
state.socketTask.send({
|
|||
|
data: '[join]' + 'mobile-'+loginUserId,
|
|||
|
async success() {
|
|||
|
// console.log("{" + p + "}==》消息发送成功");
|
|||
|
},
|
|||
|
});
|
|||
|
// 注:只有连接正常打开中 ,才能正常收到消息
|
|||
|
state.socketTask.onMessage((res) => {
|
|||
|
// console.log("收到服务器内容:" , JSON.parse(res.data));
|
|||
|
state.eventlist = JSON.parse(res.data)
|
|||
|
// state.unread.push(JSON.parse(res.data))
|
|||
|
if (state.eventlist.USER_ID === loginUserId) {
|
|||
|
var innerAudio = uni.createInnerAudioContext();
|
|||
|
innerAudio.autoplay = true;
|
|||
|
innerAudio.loop = true;
|
|||
|
innerAudio.src = '../../static/audio/alarm.mp3';
|
|||
|
innerAudio.onPlay(() => {
|
|||
|
// console.log('开始播放');
|
|||
|
});
|
|||
|
innerAudio.onError((e) => {
|
|||
|
console.log(e);
|
|||
|
// console.log(e.errMsg);
|
|||
|
// console.log(e.errCode);
|
|||
|
});
|
|||
|
if (state.eventlist.MESSAGE) {
|
|||
|
uni.showModal({
|
|||
|
title: '警告',
|
|||
|
content: state.eventlist.MESSAGE,
|
|||
|
showCancel: false,
|
|||
|
confirmText: '确定',
|
|||
|
success: res => {
|
|||
|
if (res.confirm) {
|
|||
|
innerAudio.stop()
|
|||
|
innerAudio = null
|
|||
|
}
|
|||
|
}
|
|||
|
})
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
});
|
|||
|
});
|
|||
|
state.socketTask.onClose((res) => {
|
|||
|
state.isOpenSocket = false;
|
|||
|
})
|
|||
|
},
|
|||
|
WEBSOCKET_SEND(state, p) {
|
|||
|
state.socketTask.send({
|
|||
|
data: p,
|
|||
|
async success() {
|
|||
|
// console.log("{" + p + "}==》消息发送成功");
|
|||
|
},
|
|||
|
});
|
|||
|
},
|
|||
|
},
|
|||
|
actions: {
|
|||
|
WEBSOCKET_INIT({
|
|||
|
commit
|
|||
|
}, url) {
|
|||
|
commit('WEBSOCKET_INIT', url)
|
|||
|
},
|
|||
|
WEBSOCKET_SEND({
|
|||
|
commit
|
|||
|
}, p) {
|
|||
|
commit('WEBSOCKET_SEND', p)
|
|||
|
}
|
|||
|
}
|
|||
|
})
|