位置: IT常识 - 正文

一个简单的websocket hook(一个简单的web项目名称)

编辑:rootadmin
一个简单的 vue3 的 websocket hook. 有以下基础功能: 创建链接 失败重连 发送心跳包 import { ref } from "vue"; export interface WS_CONFIG { url: string; // ws链接地址 sendData?: Record ...

推荐整理分享一个简单的websocket hook(一个简单的web项目名称),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:一个简单的web的页面,一个简单的web代码,一个简单的web app要包含的内容清单,一个简单的web项目名称,一个简单的web项目例子,一个简单的web项目例子,一个简单的web作业,一个简单的web项目例子,内容如对您有帮助,希望把文章链接给更多的朋友!

一个简单的 vue3 的 websocket hook. 有以下基础功能:

创建链接失败重连发送心跳包import { ref } from "vue";export interface WS_CONFIG { url: string; // ws链接地址 sendData?: Record<string, any>; // 请求数据 reconnectSec?: number; // 请求异常重连间隔 needHeart?: boolean; // 是否需要心跳 heartSec?: number; // 心跳间隔 heartData?: unknown; // 心跳时发送的数据}export default function <T>({ url, sendData = {}, heartSec = 1000 * 30, needHeart = false, reconnectSec = 1000 * 30, heartData = "ping",}: WS_CONFIG) { // 响应数据 const wsData = ref<T | undefined>(); // 重试次数 const retryNumber = ref<number>(0); let socket: WebSocket | null = null; let heart_Interval: number | null = null; let lockConnect = false; let number = 0; // 创建链接 function connect() { // 重连之前,关闭上次的连接 if (socket) { socket.close(); } socket = new WebSocket(url); retryNumber.value = number++; // 连接成功回调 socket.onopen = () => { console.log(`${url} open event - ${new Date()}`); // 维持心跳 needHeart && heart(); // 清空重试次数 number = 0; retryNumber.value = 0; // 发送数据 socket?.send(JSON.stringify(sendData)); }; // 连接断开回调 socket.onclose = (e) => { console.log(`${new Date()}${url} close eventcode: ${e.code};reason: ${e.reason};isTrusted: ${e.isTrusted}; `); console.log(`reconnect - ${new Date()}`); // 进行重连 reconnect(); }; // 连接失败回调 socket.onerror = (e) => { console.log(`${url} error event`, e); // 进行重连 reconnect(); }; // 接收到数据 socket.onmessage = (e: MessageEvent<string>) => { const { data } = e; const _data = (typeof data === "string" ? JSON.parse(data) : data) as T; wsData.value = _data; }; } // 心跳函数,维持链接不断开 function heart() { clearHeart(); heart_Interval = setInterval(() => { socket?.send( typeof heartData === "string" ? heartData : JSON.stringify(heartData) ); }, heartSec); } // 断开心跳 function clearHeart() { heart_Interval && clearInterval(heart_Interval); } // 重连 function reconnect() { // 控制重连频率 if (lockConnect) { return; } lockConnect = true; // 清除心跳 clearHeart(); setTimeout(() => { lockConnect = false; connect(); }, reconnectSec); } connect(); // 关闭链接 function clearWS() { socket?.close(); clearHeart(); } return { wsData, retryNumber, clearWS, };}
本文链接地址:https://www.jiuchutong.com/zhishi/309246.html 转载请保留说明!

上一篇:电脑学习网解决方案:危险数据盘为windwos分区,为了你的数据安全,请手动挂载,本脚本不执行任何操作(网上学电脑哪个软件好)

下一篇:帝国cms导航怎么加nofollow(帝国cms导航站模板)

  • 退税是什么科目的
  • 赊销和分销时纳税义务发生时间是什么时候?
  • 基金份额股权转让
  • 无票收入需要缴纳所得税吗
  • 怎么导出银行对账单流水
  • 每月记账报税客户怎么填
  • 资产减值损失在利润表怎么填列
  • 快递费未支付应该寄走了吗
  • 资本公积账务
  • 以前年度记错的费用怎么调整?
  • 转出未交增值税借方余额怎么处理
  • 收入成本以前年度损益调整账务处理是怎样的?
  • 那些发票可以报
  • 出口进项税额转出怎么做账务处理
  • 公司转账给公司会计分录
  • 建设单位增值税抵扣
  • 外管证开具后如何缴税?
  • 工具器具属于固废吗
  • 转售水电收入
  • 个人网银测试要点
  • 跨年度残保金退税怎么算
  • 会计报表怎么处理
  • 1697510614
  • 怎么在bios设置启动项
  • 鸿蒙系统智慧场所在哪
  • 销售门窗并安装如何缴纳增值税
  • 新办企业装修会计分录
  • win10为什么毛病这么多
  • php 输出
  • 特许权使用费税前扣除标准
  • 阳澄湖大闸蟹的功效和作用
  • zendframework3中文手册
  • 公司员工的车加油可以开公司发票吗
  • 房屋装修固定资产置换
  • 前端解决跨域问题的8种方案(最新最全)
  • 谈谈社会公德普通话三分钟
  • vue的安装步骤
  • vue3的ref,reactive的使用和原理解析
  • gbdrt
  • php数组转树
  • 即征即退先征后返属于政府补助吗
  • 如何在idea上运行python
  • 母公司为子公司提供担保需要决议吗
  • 财报层次和认定层次
  • uni-simple-router 跳转无效
  • 企业资产盘亏的定性依据
  • 报账单大写金额负数填写方式
  • mysqlreport显示Com_中change_db占用比例高的问题的解决方法
  • 股票的价格是由什么决定
  • 城建税免征怎么记账
  • 固定资产大修理和更新改造的区别
  • 销售折让的会计分录怎么做
  • 保险公司代扣的车船使用税分录
  • 净利润递延所得税
  • 取得下列资产时应按公允价值计量
  • 退款产生的手续费怎么算
  • 招标代理服务费取费标准
  • 以货物抵应收账款的分录
  • 增值税发票过期一年未认证怎么办
  • 运输服务和运输费有什么区别
  • 行政事业单位计提工资怎么做账
  • 搜索功能使用方法
  • win8.1怎么打开设置
  • CentOS系统中与时间的相关命令详解
  • mac配置selenium
  • win7进入dos的方法
  • html中渐变
  • web标准有那几个方面
  • shutil模块 python安装
  • 淘宝python基础教程
  • jquery foreach循环
  • 发票 字体
  • 欠税款要坐牢吗
  • 北京国税局开票流程
  • 河南省地方税务局公告2017年第4号
  • 上海工资8000税后多少
  • 国家税务总局服务平台
  • 车船税与船舶吨税法律制度ppt
  • 国家税务总局服务中心
  • 山西土地增值税清算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设