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

  • excel表格加减公式怎么设置(excel表格加减公式不管用了)

    excel表格加减公式怎么设置(excel表格加减公式不管用了)

  • 三星手机来电归属地在哪里设置(三星手机来电归属地显示设置)

    三星手机来电归属地在哪里设置(三星手机来电归属地显示设置)

  • 噪声会干扰声呐探测系统吗(噪声对人的干扰不仅和声压级有关,而且和频率也有关)

    噪声会干扰声呐探测系统吗(噪声对人的干扰不仅和声压级有关,而且和频率也有关)

  • ipv4dns的服务器填什么(ipv4dns的服务器需要加密吗)

    ipv4dns的服务器填什么(ipv4dns的服务器需要加密吗)

  • 红米6pro为什么下架(红米6pro为什么有的主题换不了壁纸)

    红米6pro为什么下架(红米6pro为什么有的主题换不了壁纸)

  • 淘宝退货需要指定快递吗(淘宝退货需要指定商家吗)

    淘宝退货需要指定快递吗(淘宝退货需要指定商家吗)

  • 键盘确定键是哪一个(键盘确定键坏了怎么办)

    键盘确定键是哪一个(键盘确定键坏了怎么办)

  • iphonexs基带是高通还是英特尔(苹果xs国行基带)

    iphonexs基带是高通还是英特尔(苹果xs国行基带)

  • iPhone7长度(iPhone7长度尺寸)

    iPhone7长度(iPhone7长度尺寸)

  • 抖音视频限制分享是啥意思(抖音1到5分钟视频权限)

    抖音视频限制分享是啥意思(抖音1到5分钟视频权限)

  • 手机4G旁边突然出来个加号(手机4g旁边突然没信号)

    手机4G旁边突然出来个加号(手机4g旁边突然没信号)

  • 手机充电自动关机是什么原因(手机充电自动关机怎么回事儿)

    手机充电自动关机是什么原因(手机充电自动关机怎么回事儿)

  • vivox27自带美颜吗(vivox20美颜)

    vivox27自带美颜吗(vivox20美颜)

  • ios是什么字体(ios使用的是什么字体)

    ios是什么字体(ios使用的是什么字体)

  • winxp是什么系统

    winxp是什么系统

  • word文档怎么取消标注(word文档怎么取消自动编号)

    word文档怎么取消标注(word文档怎么取消自动编号)

  • 怎样修改图片大小(怎样修改图片大小200kb)

    怎样修改图片大小(怎样修改图片大小200kb)

  • 手机怎样定对方位(手机怎样定对方位置信息)

    手机怎样定对方位(手机怎样定对方位置信息)

  • 天猫会员店红包怎么使用(手机天猫会员店红包是什么意思)

    天猫会员店红包怎么使用(手机天猫会员店红包是什么意思)

  • wps发文件为什么是链接(wps发文件为什么会有WPS)

    wps发文件为什么是链接(wps发文件为什么会有WPS)

  • 苹果电池寿命75%要换吗(苹果电池效率75要换吗)

    苹果电池寿命75%要换吗(苹果电池效率75要换吗)

  • iqoo背后灯有几种颜色(iqoo背面有灯是哪款)

    iqoo背后灯有几种颜色(iqoo背面有灯是哪款)

  • 华为手表微信怎么安装(华为手表微信怎么登录)

    华为手表微信怎么安装(华为手表微信怎么登录)

  • 怎么查看QQ空间的秘密(怎么查看qq空间删除的照片)

    怎么查看QQ空间的秘密(怎么查看qq空间删除的照片)

  • 华为jat一al00是什么型号(华为jat-al00)

    华为jat一al00是什么型号(华为jat-al00)

  • 缴纳个人所得税还算应届毕业生吗
  • 收入及增值税会计准则
  • 采购暂估的处理方式
  • 应交税费是什么科目
  • 年末结转净利润
  • 增值税发票四舍五入
  • 金税盘全额抵扣分录
  • 高铁票丢失怎么办
  • 企业安全防护措施有哪些
  • 公司成立前购买的设备算个人还是公司
  • 机械租赁公司拿什么发票做成本账
  • 收到银行退回的银行汇票多余款
  • 打官司失败了要赔偿原告诉讼费吗?
  • 被开除了怎么办理手续
  • 不动产进项税额抵扣最新通知2023
  • 企业发工资交税
  • 2020金税四期上线
  • 个人购买办公楼出租要交税吗
  • 收到运费发票是进项还是销项
  • 购买汽车车辆购置税个人垫付,企业付给个人的附件归属
  • 印花税零申报怎么申报不了
  • 发票未到的费用怎么处理
  • 苹果手机miracast在哪里找到
  • linux虚拟机怎么输入中文
  • 支付项目工程款可以借流贷吗
  • iphone如何录音转文字
  • php自定义变量
  • 为什么win+d
  • macos big sur怎么恢复出厂设置
  • php数组函数输出《咏雪》里有多少"片"字
  • 融资租入固定资产的账务处理
  • 复制快捷键ctrl+c
  • php proc_open
  • 混合成本的分解方法很多,通常有
  • 提高支票处理效率的有效方法是
  • 企业职工教育培训经费列支范围适用事业单位
  • 树枝上停着一只什么小鸟
  • vuex存储用户信息
  • 不能抵扣的福利发票要勾选吗为什么
  • 学习笔记:深度学习(2)——BP神经网络
  • vue3版本网页小游戏
  • python 嵌入
  • 公司未实缴能破产吗
  • 典当公司收到房款怎么办
  • 其他综合收益 综合收益
  • 一般纳税人进项大于销项账务处理
  • mysql索引和主键
  • 车补贴是要缴纳增值税吗
  • sqlserver2008r2评估期已过
  • 计提的管理费用要结转吗
  • 进度款开票是开实收金额吗
  • 运费在会计科目中属于什么费用
  • 建筑设计行业收费标准
  • 股权激励费用摊销意思是
  • 应交增值税进项税额月底怎么处理
  • 天然气管道安装费多少钱一米
  • 医院医保会计的岗位职责
  • 会计忘记申报税款会有什么影响
  • 空调的折旧年限是多少年的
  • 公司增资需要什么流程呢 最新
  • 企业办增项怎样办理
  • mysql的自动增长怎么表示的?
  • MySQL exists 和in 详解及区别
  • 怎么用uefi装win7
  • iphone看mac
  • Win7笔记本突然wifi功能没了
  • win7系统禁用网络后如何开启
  • ssh密钥根据什么生成
  • vim配置语法高亮
  • win8查看已连接的wifi密码
  • cocos2dx游戏开发框架
  • 学习雷锋好榜样
  • js定义数字
  • javascript ie
  • android的数据储存方式
  • listview.items.add
  • qpython pydroid
  • 国家税务局公告2021年第3号
  • 教师资格证认定流程
  • 国税新规
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设