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

  • 八个小技巧教你如何做好淘宝店铺运营(3个小窍门大家学起来)

    八个小技巧教你如何做好淘宝店铺运营(3个小窍门大家学起来)

  • 苹果13怎么导入sim卡联系人(苹果13怎么导入sim卡联系人没反应)

    苹果13怎么导入sim卡联系人(苹果13怎么导入sim卡联系人没反应)

  • 微信视频发热严重(手机微信视频发热正常吗?)

    微信视频发热严重(手机微信视频发热正常吗?)

  • 华为2g网络怎么换成4g网络(华为2g网络怎么设置成4g)

    华为2g网络怎么换成4g网络(华为2g网络怎么设置成4g)

  • 苹果手机信号正在搜索是怎么回事(苹果手机信号正常别人电话打不进来)

    苹果手机信号正在搜索是怎么回事(苹果手机信号正常别人电话打不进来)

  • 抖音播放量200正常吗(抖音播放量一二百)

    抖音播放量200正常吗(抖音播放量一二百)

  • 电脑自带截屏键是哪个(电脑自带截屏键盘按哪个键)

    电脑自带截屏键是哪个(电脑自带截屏键盘按哪个键)

  • 拉卡拉手环亮度可调吗(拉卡拉手环屏幕太暗怎么调)

    拉卡拉手环亮度可调吗(拉卡拉手环屏幕太暗怎么调)

  • 批量解除关系是什么意思(如何批量解除合并单元格)

    批量解除关系是什么意思(如何批量解除合并单元格)

  • 魅族16s重量(魅族16s机身重量)

    魅族16s重量(魅族16s机身重量)

  • 手机内屏坏太久有影响吗(手机内屏坏了长时间不修会怎么样)

    手机内屏坏太久有影响吗(手机内屏坏了长时间不修会怎么样)

  • windows是安卓系统吗(安卓系统属于微软吗)

    windows是安卓系统吗(安卓系统属于微软吗)

  • qq开通超级会员的气泡是永久的吗(qq开通超级会员可以看以前记录吗)

    qq开通超级会员的气泡是永久的吗(qq开通超级会员可以看以前记录吗)

  • 坚果pro3支持5g吗(坚果pro3有90hz吗)

    坚果pro3支持5g吗(坚果pro3有90hz吗)

  • 苹果6splus支持多少瓦充电(苹果6splus支持多少快充)

    苹果6splus支持多少瓦充电(苹果6splus支持多少快充)

  • 苹果x有没有3dtouch功能吗

    苹果x有没有3dtouch功能吗

  • 手机有个耳机标志,手机没声音(手机有个耳机标志,手机没声音怎么调)

    手机有个耳机标志,手机没声音(手机有个耳机标志,手机没声音怎么调)

  • 华为mate30是不是商务手机(华为mate30属于什么系列)

    华为mate30是不是商务手机(华为mate30属于什么系列)

  • QQ红包地图怎么画(qq红包地图怎么画才能识别的出来)

    QQ红包地图怎么画(qq红包地图怎么画才能识别的出来)

  • 实时通知怎么关闭(实时提醒什么意思)

    实时通知怎么关闭(实时提醒什么意思)

  • 新版微视怎么删除作品(如何删除微视中的视频)

    新版微视怎么删除作品(如何删除微视中的视频)

  • cad楼梯怎么画(cad楼梯怎么画折断线)

    cad楼梯怎么画(cad楼梯怎么画折断线)

  • 电脑文件删除怎么办 ?文件删除找回(电脑文件删除怎么恢复找回)

    电脑文件删除怎么办 ?文件删除找回(电脑文件删除怎么恢复找回)

  • 在项目开发中统计代码行数的6种方式(在项目进行过程中,一个开发人员)

    在项目开发中统计代码行数的6种方式(在项目进行过程中,一个开发人员)

  • phpcms v9怎么样(phpcms v9官网)

    phpcms v9怎么样(phpcms v9官网)

  • 应收留抵税额退税款属于哪类科目
  • 城市基础设施配套费减免
  • 餐饮费入什么科目
  • 过路费报销属于什么费用科目
  • 企业中征码全称
  • 印花税已经申报在哪里点交费
  • 利息支出可以抵扣吗
  • 个税申报 两种方式
  • 实收资本能是现金流出吗
  • 冲减上年度收入的会计分录
  • 销售息税前利润是什么
  • 小规模纳税人销售货物税率是多少
  • 委外研发费用如何开票
  • 开票交税当月不确认收入如何做账?
  • 出口货物不用退税吗现在
  • 员工借款报销流程
  • 非独立核算的分公司是什么意思
  • 税号开错了
  • 个人名义帮公司贷款
  • 增值税普通发票怎么开
  • 报销单里报销内容可以写送客户烟吗
  • 个人储蓄存款利率
  • 为什么无形资产减值准备一经计提不得转回
  • 地铁充值发票能报销吗
  • 城建税有哪些征税项目
  • 没有收到发票的费用怎么入账
  • 年度利润总额是会计利润吗
  • 收到现金支票如何进账
  • 当月制造费用转生产成本
  • php怎么把图片存入mysql
  • python中函数的可变参数有哪几种?各有什么特点?
  • 银承到期扣款会计分录
  • 直系亲属股权转让免征个人所得税
  • mac如何在桌面显示我的电脑
  • 认缴出资没到位违法吗
  • php 实例
  • 查补以前年度税款账务处理
  • 特许权使用费的增值税税率是多少
  • 无偿赠送房屋要交税吗
  • 营改增后一般纳税人缴纳增值税彩用简易征收3%
  • 固定资产净残值率是多少
  • pyecharts怎么用
  • opencv1.0安装
  • css如何应用
  • php强制下载文件在哪
  • mkv视频制作
  • vget命令
  • 金税盘到上传截止日期
  • 技术转让免征增值税需要备案吗
  • 进项转出了还能再转进去吗
  • sql server 2008r
  • 个人重组债务怎么交税
  • 门面出租需要什么手续
  • 应交税费明细账登记图
  • 新成品油发票开具的模块解密是?
  • 营业执照是如何年审的
  • 房租押金不退还的账务怎么处理
  • 合作社收到政府补贴会计分录
  • 应收款和坏账的关系
  • 加盟费摊销会计分录
  • 纳税期限与缴库期限不符
  • 挂靠收入如何做账处理?
  • sql汇总查询
  • win10快速访问在哪
  • xp更改系统区域设置
  • redhat linux enterprise 5 输入ifconfig无效的解决方法
  • win10系统打开文件夹就不停的闪
  • unity的协程
  • stick function
  • android ichart ColumnStacked2D图表无法显示解决方案
  • 用javascript
  • 对应用进行单元测试的是
  • 在xml文件里使用的命令
  • CameraViewControl 摄像机 绕 物体
  • javascript消息对话框
  • 甘肃职称申报评审入口官网
  • 普票已开发票怎么作废
  • 北京重点税源直报平台登录
  • 国家税务总局一个月多少钱
  • 费减备案合格后怎么操作?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设