位置: 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导航站模板)

  • 个人所得税的税点是多少钱
  • 企业返聘退休人员劳务合同
  • 退回股东投资款现金流量
  • 公司有残疾人如何进行增值税减免备案
  • 预付房租收到发票怎么做
  • 银行贷款受托支付后,钱怎么转回来
  • 自行建造固定资产中的自营工程,在领用工程物资
  • 增值税专用发票可以开电子发票吗
  • 内部固定资产交易当期的合并处理,涉及出售
  • 进项税转出申报表能填负数吗
  • 商业承兑汇票风险大吗
  • 国外出差差旅费
  • 拆迁置换安置房
  • 应收账款客户少了几毛没有付怎么处理
  • 淘宝电商会计交税怎么交?
  • 2016年的发票可以用到什么时候
  • 代扣代缴增值税纳税义务发生时间
  • 除工资外其他收入需要个税吗
  • 固定资产机器设备使用年限
  • 金税盘年费如何做账
  • 房产企业开发产品出租
  • 发票开错重开怎么做账?
  • 业委会是否要交税
  • 现金支付给个人
  • 税局代开专票季度未达起征点怎么缴纳地税?
  • 筹备期废品回收怎么做账
  • 处理车辆违章送哪个部门
  • 开机自动连接宽带怎么设置w11
  • 我告诉你win7旗舰版
  • php dom
  • 金融保险业的营业税率为
  • Bàu Cá Cái的红树林,越南广义 (© Robert Harding World Imagery/Offset)
  • 小规模纳税人减半征收的六税两费
  • 耕地开垦费应计入哪个会计科目
  • php中exec
  • 上海广为
  • 以非现金资产清偿债务的,债权人应当
  • 天然气零售企业
  • 首涂24套
  • 商业承兑汇票如何追索
  • 一般纳税人申报表电子版
  • sql查询树状数据
  • 应付职工薪酬的核算内容
  • 人工费暂估怎么做分录
  • 基本户是活期还是定期
  • 借款与报销流程设计
  • 所得税退税可以不退吗
  • 其他权益工具投资是什么意思
  • 农村合作社怎么办理流程
  • 归纳投入外币资产怎么写
  • 固定资产属于净资产指的是什么
  • 厂家给的返利应该怎么做会计分录
  • 哪里还有备用金可以借
  • 记账凭证的分类标准
  • 生产成本结转到本年利润吗
  • 管理费用具体例子
  • 手写发票还能用么
  • sql如何查出重复的数据
  • easybcd修复ubuntu
  • windows7字体安装方法
  • win10预览版选哪个
  • 鼠标右键一直锁定一个应用
  • centos control-d
  • xp系统怎么调性能
  • centos7 目录结构
  • Percona Server 5.5.44-37.3/5.6.25-73.0 发布
  • 在linux系统中,用来存在系统所需
  • 代码的历史
  • css总结笔记
  • unity learn
  • linux监控网络请求
  • dos 到指定目录
  • js获取form表单数据并显示
  • bootstrap制作的网站页面
  • unity behavior designer
  • android中edittext
  • javascript基础书
  • jquery22
  • 年收入12w
  • 房产税的解读
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设