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

组件化 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" />
http://www.xdnf.cn/news/14185.html

相关文章:

  • VSCode - VSCode 转换英文字母的大小写
  • go语言快速入门
  • Stored XSS(存储型跨站脚本攻击)
  • 日常运维问题汇总_41
  • RAG数据集综述
  • PHP设计模式实战:构建高性能API服务
  • java agent技术(二)
  • ByteTrack:通过关联每个检测框实现多目标跟踪
  • NY197NY205美光闪存固态NY218NY226
  • 阳台光伏配套电表ADL200N-CT/D16-Wf-1
  • 【大模型学习cuda】cuda调度波次wave
  • 【字典树 滑动窗口】P12318 [蓝桥杯 2024 国研究生组] 分割字符串|普及+
  • 原创无损智算OTN(HIC-OTN,Hitless Intelligent Computing OTN)
  • ar 导航导览技术如何实现的?室内外融合定位与ar渲染技术深度解析
  • Linux-线程
  • Component name “index“ should always be multi-word的解决方式
  • HarmonyOS应用开发——线性布局
  • python爬虫简便框架,附带百度操作完整案例
  • Transformer 核心概念转化为夏日生活类比
  • 自主导航巡检机器人系统解决方案
  • [智能客服project] 架构 | 对话记忆 | 通信层
  • UR机器人解锁关节扭矩控制:利用英伟达Isaac Lab框架,推动装配自动化的Sim2Real迁移
  • 自适应攻击的强大后门防御
  • 【AT32】AT32定时器
  • 【华为Pura 80 Ultra影像真的有点东西】
  • 批处理实现:自动抓取perfetto日志 自动导出到当前文件夹 自动打开分析页面
  • NLP学习路线图(四十四):跨语言NLP
  • 【Linux基础知识系列】第二十四篇-网络配置文件的解析与修改
  • error: error:0308010c:digital envelope routines::unsupported
  • 联想笔记本怎么装win11专业版_联想笔记本用u盘装win11专业版图文教程