在vue3中使用WebSocket的正确姿势,优雅~实在是太优雅了~

说明

此教程针对typescript,提供断线自动重连,断线数据重发,自动心跳,自定义消息发送机制

测试用例地址:在vue3+typescript-websocket示例
更多工具文档地址

安装

npm i tools-websocket

使用示例

在main.js中引入

import "tools-websocket"
  • 创建 WSUtil.ts文件
  • 内容:
export default class WSUtil {
    static ws: WebSocketBean
    static async init() {
        const sendSuffix = ''
        
        //初始化websokcet对象
        this.ws = new WebSocketBean({
            url: 'ws://192.168.1.66:8801/ws',
            needReconnect: true,
            reconnectGapTime: 3000,
            onerror: () => {
                console.log('断开')
            },
            sendSuffix,
            messageSuffix: sendSuffix,
            heartSend: '~',
            heartGet: '~',
            heartGapTime: 3000,
            onmessage: (data) => {
            	//在这里写消息处理逻辑
                console.log(data.data)
                const sp = data.data.split(sendSuffix).filter((el: string) => el.length > 0)
                console.log(sp)
            }
        })
        //建立连接
        this.ws.start()
    }
}

  • 发送数据
WSUtil.ws.send('data')
  • 主动断开
WSUtil.ws.dispose()
  • 消息处理

对消息处理一般使用事件总线去做,使用tools-javascript仓库中提供的CEvent.on和CEvent.emit去做即可

//在WSUtil.ts的onmessage方法中
onmessage: (data) => { 
    //在这里写消息处理逻辑 
    console.log(data.data) 
    const sp = data.data.split(sendSuffix).filter((el: string) => el.length > 0) 
    console.log(sp) 
    //这里sp的数据为['{\"code\":\"getData\",\"data\":\"test\"}']
    sp.forEach(item=>{
        const jsonData = JSON.parse(item)
        //事件触发
        CEvent.emit(jsonData.code,jsonData.data)
    })
}


//在任意文件或者页面中
CEvent.on("getData",(data)=>{
    //在onmessage触发后,这里应该打印test字符串
    console.log(data)
})
  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Vue 3使用WebSocket,你可以按照以下步骤进行操作: 1. 首先,安装 `vue-native-websocket` 库,它可以简化与WebSocket的交互。打开终端并运行以下命令: ``` npm install vue-native-websocket ``` 2. 在Vue应用的入口文件(通常是 `main.js`)引入并安装 `vue-native-websocket`: ```javascript import VueNativeSock from 'vue-native-websocket'; Vue.use(VueNativeSock, 'ws://localhost:8080', { format: 'json', reconnection: true, }); ``` 这里的 `'ws://localhost:8080'` 是你要连接的WebSocket服务器的URL。你可以根据实际情况进行修改。 3. 在Vue组件使用WebSocket。在需要使用WebSocket的组件,你可以通过 `$socket` 属性来访问WebSocket实例。例如,你可以在 `created` 钩子函数创建WebSocket连接,并监听一些事件: ```javascript export default { created() { this.$socket.addEventListener('open', () => { console.log('WebSocket连接已打开'); }); this.$socket.addEventListener('message', event => { console.log('收到消息:', event.data); }); this.$socket.addEventListener('close', () => { console.log('WebSocket连接已关闭'); }); this.$socket.addEventListener('error', error => { console.error('WebSocket连接出错:', error); }); }, } ``` 4. 发送和接收消息。你可以使用 `$socket.send()` 方法发送消息到服务器,并且通过监听 `'message'` 事件接收服务器发送的消息。例如: ```javascript this.$socket.send('Hello, WebSocket!'); this.$socket.addEventListener('message', event => { console.log('收到消息:', event.data); }); ``` 这样就可以在Vue 3使用WebSocket了。记得根据实际情况修改WebSocket服务器的URL。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值