美文网首页uni-app
uni-app全局使用websocket收发数据

uni-app全局使用websocket收发数据

作者: 幽小鬼 | 来源:发表于2021-11-25 18:29 被阅读0次

在上一篇《uniapp全局使用websocket》中有人提出没有写websocket接收数据,现在继续完善优化一下我们store文件夹底下的index.js文件,代码如下:

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

const store = new Vuex.Store({
    state: {
        socketTask: null,
        websocketData: {}, // 存放从后端接收到的websocket数据
    },
    mutations: {
        setWebsocketData (state, data) {
            state.websocketData = data
        }
    }, 
    actions: {
        websocketInit ({ state, dispatch }, url) {
            state.socketTast = uni.connectSocket({
                url, // url是websocket连接ip
                success: () => {
                    console.log('websocket连接成功!')
                },
                fail: e => {
                    console.log('连接失败' + e)
                }
            })
            state.socketTast.onOpen(() => dispatch('websocketOnOpen'))
            state.socketTast.onMessage(res => dispatch('websocketOnMessage', res))
            state.socketTast.onClose(e => dispatch('websocketOnClose'))
            state.socketTast.onError(e => dispatch('websocketOnError'))
        },
        websocketOnOpen ({ commit }) {
            console.log('WebSocket连接正常打开中...!')
        },
        // 收到数据
        websocketOnMessage ({ commit }, res) {
            console.log('收到服务器内容:' + res.data)
            if (res.data !== '连接成功') {
                commit('setWebsocketData', (res && JSON.parse(res.data) || null))
            }
        },
        websocketOnClose ({ commit, dispatch }) {
            console.log('WebSocket连接关闭')
        },
        websocketOnError ({ commit, dispatch }) {
            console.log('WebSocket连接错误')
        },
        websocketClose ({ state }) {
            if (!state.socketTast) 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

在任意页面都可以全局使用,初始化websocket

this.$store.dispatch('websocketInit', 'websocket ip')

发送websocket数据:

this.$store.dispatch('websocketSend', '发送的数据')

关闭websocket连接:

this.$store.dispatch('websocketClose')

需要使用接收到的websocket数据就在任意页面调用this.$store.state.websocketData即可。

本文主要还修改了websocket相关方法的位置,从mutations统一都移到了actions,以上涉及到vuex的使用就不在赘述了,具体可以看我另一篇博客《Vuex学习笔记》,有问题可以评论指出

相关文章

  • uni-app全局使用websocket收发数据

    在上一篇《uniapp全局使用websocket[https://www.jianshu.com/p/bca7df...

  • websocket 全局使用

    1单独新建一个websocket.js文件 2,在main.js全局引用 3,在全局的页面初始化 4,在全局的页面...

  • vue全局使用WebSocket

    vue接入websocket 首先就是网上的写法有很多但是 都是需要创建一个对象进行相关的状态回调,有的是需要创建...

  • uniapp全局使用websocket

    我们通过vuex来实现全局状态管理,uniapp中内置了vuex,可以直接引入使用。在根目录下新建store文件夹...

  • uni-app使用icon组件

    注意:icon组件不能在app.vue中全局调用只能在当前使用页面调用 全局引用方法参考最新文章uni-app使用...

  • uni-app写一个阅读类app

    这个程序主要是学习uni-app和egg.js,介绍:前端开发使用uni-app,后端使用egg.js,数据库使用...

  • Fiddler抓包和修改WebSocket数据,支持wss

    记录一下用Fiddler对WebSocket收发的数据进行抓包分析和篡改数据,只找到这么一个方法,能用就行吧。时间...

  • nodejs 开发websocket 笔记

    使用nodejs 开发websocket消息分发系统 websocket使用事件触发机制传输密集传输数据,跟nod...

  • uni-app使用时需注意的一些问题

    一、组件做全局引入时要注意 最近在使用uni-app开发微信小程序,开头偷懒,组件做了全局引入,但是随着组件的增加...

  • 1.uni-app的相关介绍使用

    uni-app的基本使用 基础部分: +环境搭建 +页面外观配置 +数据绑定 +uni-app的生命周期 +组件的...

网友评论

    本文标题:uni-app全局使用websocket收发数据

    本文链接:https://www.haomeiwen.com/subject/fnhztrtx.html