当前位置: 首页 > news >正文

组件化 websocket

实时数据响应,组件化websocket减少代码冗余

组件定义 websocket.vue

<template><div></div>
</template><script>export default {data() {return {webSocket: null, // webSocket实例lockReconnect: false, // 重连锁,避免多次重连maxReconnect: 3, // 最大重连次数, -1 标识无限重连reconnectTime: 0, // 重连尝试次数};},created() {this.initWebSocket()},destroyed: function () {this.webSocket.close()},//方法集合methods: {/*** 初始化 weoSocket*/initWebSocket() {// ws地址 const host = 'XXXXXXX'const wsUri = `ws://${host}:3000`console.log(wsUri)// 建立连接this.webSocket = new WebSocket(wsUri)// 连接成功this.webSocket.onopen = this.onOpen// 连接错误this.webSocket.onerror = this.onError// 接收信息this.webSocket.onmessage = this.onMessage// 连接关闭this.webSocket.onclose = this.onClose},/*** 连接成功事件*/onOpen() {console.log('WebSocket connection success')this.reconnectTime = 0},/*** 数据发送* @param msg*/send(msg) {//数据发送this.webSocket.send(msg)console.log('Websocket send:',msg)},/*** 连接失败事件* @param e*/onError(e) {//错误console.log(`WebSocket connection error:${e.code} ${e.reason} ${e.wasClean}`)//重连// this.reconnect()},/*** 连接关闭事件* @param e*/onClose(e) {//关闭console.log(`WebSocket connection closed:${e.code} ${e.reason} ${e.wasClean}`)//重连// this.reconnect()},/*** 重新连接*/reconnect() {if (this.lockReconnect || (this.maxReconnect !== -1 && this.reconnectTime > this.maxReconnect)) {return}this.lockReconnect = truesetTimeout(() => {this.reconnectTime++// 建立新连接this.initWebSocket()this.lockReconnect = false}, 5000)},/*** 接收服务器推送的信息* @param msgEvent*/onMessage(msgEvent) {// console.log('日志信息打印:',msgEvent)this.$emit('onMessage', msgEvent.data)},},}
</script>

组件引用

        <myWebsocket v-if="dialogVisible" @onMessage="getMsg" />

相关文章:

  • 基于Netty的UDPServer端和Client端解决正向隔离网闸数据透传问题
  • 在正则表达式中语法 (?P<名字>内容)
  • 2025.6.12 【校内 NOI 训练赛】记录(集训队互测选做)
  • 计算机视觉与深度学习 | 2024年至2025年图像匹配算法总结(原理,公式,代码,开源链接)
  • 如何将视频从 iPhone 传输到 HP 笔记本电脑
  • 2025年渗透测试面试题总结-字节跳动[实习]安全研发员(题目+回答)
  • 【QT系统相关】QT文件
  • 笔记本电脑安装win10哪个版本好_笔记本装win10专业版图文教程
  • 从 0 开始理解 Spring 的核心思想 —— IoC 和 DI(1)
  • 【论文解读】rStar:用互洽方法增强 SLM(小型语言模型) 推理能力
  • vue前端项目打包和部署
  • wireshark抓包过程
  • python可视化:从《歌手2025》到同类型节目全面解析
  • 机器学习中的数据准备关键技术
  • el-tree-select 多选树形下拉框,实现当选中时,根据当前选择的对象,动态生成表单数据。
  • 分布式爬虫系统设计与实现:跨节点MySQL存储方案
  • Vim、Nano 与 Emacs 的深度对比及嵌入式开发推荐
  • PHP语法基础篇(二):输出函数与字符串操作
  • uniapp-vue3-js-vite-pinia-eslint 快速开发模板
  • AKS升级路线最佳实践方案
  • 手机怎样设计网站建设/成都品牌推广
  • 做网站点击率怎么收钱/游戏推广对接平台
  • 浙江建设工程造价信息网站/网络营销软件站
  • 用百度网盘做视频网站/怎么申请建立网站
  • 哪些网站可以做招商广告/生成关键词的软件免费
  • 有哪些可以做兼职翻译的网站/产品如何做网络推广