1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- import Vue from 'vue'
- import Vuex from 'vuex'
- Vue.use(Vuex)
- const store = new Vuex.Store({
- state: {
- socketTask: null,
- websocketData: {}, // 存放从后端接收到的websocket数据
- is_open_socket = false //避免重复连接
- },
- mutations: {
- setWebsocketData(state, data) {
- state.websocketData = data
- }
- },
- actions: {
- websocketInit({
- state,
- dispatch
- }, url) {
- state.socketTask = uni.connectSocket({
- url, // url是websocket连接ip
- success: () => {
- console.log('WebSocket连接成功!')
- },
- fail: e => {
- console.log('连接失败' + e)
- }
- })
- state.socketTask.onOpen(() => dispatch('websocketOnOpen'))
- state.socketTask.onMessage(res => dispatch('websocketOnMessage', res))
- state.socketTask.onClose(e => dispatch('websocketOnClose'))
- state.socketTask.onError(e => dispatch('websocketOnError'))
- },
- websocketOnOpen({
- commit
- }) {
- console.log('WebSocket连接正常打开中...!')
- },
- // 收到数据
- websocketOnMessage({
- commit
- }, res) {
- let data;
- try {
- data = JSON.parse(res.data)
- } catch {
- data = {
- content: res.data
- }
- }
- commit('setWebsocketData', data);
- },
- websocketOnClose({
- commit,
- dispatch
- }) {
- console.log('WebSocket连接关闭')
- },
- websocketOnError({
- commit,
- dispatch
- }) {
- console.log('WebSocket连接错误')
- },
- websocketClose({
- state
- }) {
- if (!state.socketTask) return
- state.socketTast.close({
- success(res) {
- console.log('关闭成功', res)
- },
- fail(err) {
- console.log('关闭失败', err)
- }
- })
- },
- // 发送数据
- websocketSend({
- state
- }, data) {
- uni.sendSocketMessage({
- data,
- success: res => {
- console.log('发送成功', res)
- },
- fail: e => {
- console.log('发送失败', e)
- }
- })
- }
- }
- })
- export default store
|