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

您所在的位置:网站首页 vue关闭websocket连接 在vue3中使用WebSocket的正确姿势,优雅~实在是太优雅了~

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

2023-03-28 06:59| 来源: 网络整理| 查看: 265

说明

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

安装

安装tools-vue3工具库,此仓库提供了http请求、文件请求、websocket、signalr、cookie的功能

pnpm i tools-vue3 复制代码 使用示例 创建 WSUtil.ts文件 内容: import { WebSocketBean } from 'tools-vue3' 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() 复制代码 消息处理

对消息处理一般使用事件总线去做,使用tool-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) }) 复制代码


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3