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

  • 阿里云盘9月最新可用扩容福利码汇总(阿里云盘3月公测)

    阿里云盘9月最新可用扩容福利码汇总(阿里云盘3月公测)

  • 微信视频号内测资格的作用(微信视频号内测什么时候结束)

    微信视频号内测资格的作用(微信视频号内测什么时候结束)

  • 人工智能有多重含义包括(人工智能多重含义)

    人工智能有多重含义包括(人工智能多重含义)

  • 苹果11直播模糊如何解决(苹果直播模糊如何解决)

    苹果11直播模糊如何解决(苹果直播模糊如何解决)

  • 华为手机屏幕自己乱点失控是怎么回事(华为手机屏幕自动亮怎么关闭)

    华为手机屏幕自己乱点失控是怎么回事(华为手机屏幕自动亮怎么关闭)

  • fn加q什么意思(fn加f4是什么)

    fn加q什么意思(fn加f4是什么)

  • 关闭当前的演示文稿的快捷键(关闭演示怎么写)

    关闭当前的演示文稿的快捷键(关闭演示怎么写)

  • 畅享10plus有没有人脸解锁(畅享10plus有没有红外遥控)

    畅享10plus有没有人脸解锁(畅享10plus有没有红外遥控)

  • 保存excel2010文件时,默认文件类型是(保存excel2010文件时,保存的是什么)

    保存excel2010文件时,默认文件类型是(保存excel2010文件时,保存的是什么)

  • 抖音0播放是被屏蔽了吗(抖音0播放别人能看到吗)

    抖音0播放是被屏蔽了吗(抖音0播放别人能看到吗)

  • 手机屏幕开胶 危险吗(手机屏幕开胶了是什么原因造成的)

    手机屏幕开胶 危险吗(手机屏幕开胶了是什么原因造成的)

  • 为什么微信输入验证码登不上(为什么微信输入正确密码却显示错误)

    为什么微信输入验证码登不上(为什么微信输入正确密码却显示错误)

  • ipadpro怎么外接鼠标(ipadpro外接硬盘)

    ipadpro怎么外接鼠标(ipadpro外接硬盘)

  • qq怎样发动态和空间(qq里咋发动态)

    qq怎样发动态和空间(qq里咋发动态)

  • 佳能打印机复位键在哪(佳能打印机复位怎么操作)

    佳能打印机复位键在哪(佳能打印机复位怎么操作)

  • 回收站实际上是什么(回收站哪里找)

    回收站实际上是什么(回收站哪里找)

  • i7 9750h相当于台式什么cpu(i7 9750相当于台式机多少)

    i7 9750h相当于台式什么cpu(i7 9750相当于台式机多少)

  • 第二代计算机的内存储器为(第二代计算机的主要元件是什么)

    第二代计算机的内存储器为(第二代计算机的主要元件是什么)

  • 手机关机如何定位找人(手机关机如何定位)

    手机关机如何定位找人(手机关机如何定位)

  • wps表格里面怎么查找(Wps表格里面怎么加横线)

    wps表格里面怎么查找(Wps表格里面怎么加横线)

  • 拼多多怎么去掉推荐(拼多多怎么去掉隐私号码保护)

    拼多多怎么去掉推荐(拼多多怎么去掉隐私号码保护)

  • 手机视频怎么旋转(手机视频怎么旋转角度)

    手机视频怎么旋转(手机视频怎么旋转角度)

  • 抖音的照片怎么跟音乐卡节奏(抖音的照片怎么保存)

    抖音的照片怎么跟音乐卡节奏(抖音的照片怎么保存)

  • 拼多多物流异常百分比(拼多多物流异常资金限制)

    拼多多物流异常百分比(拼多多物流异常资金限制)

  • 蓝牙耳机弹窗是什么意思(蓝牙耳机弹窗是什么样子)

    蓝牙耳机弹窗是什么意思(蓝牙耳机弹窗是什么样子)

  • 8p有面容解锁吗(8p有面容解锁吗苹果)

    8p有面容解锁吗(8p有面容解锁吗苹果)

  • 三星Samsung笔记本电脑开机进入BIOS的方法与BIOS设置全功能菜单(F2)(三星笔记使用攻略)

    三星Samsung笔记本电脑开机进入BIOS的方法与BIOS设置全功能菜单(F2)(三星笔记使用攻略)

  • 数据分析| Pandas200道练习题,使用Pandas连接MySQL数据库(数据分析课)

    数据分析| Pandas200道练习题,使用Pandas连接MySQL数据库(数据分析课)

  • PHPCMS 如何判断该栏目是否含有子栏目?(php判断https)

    PHPCMS 如何判断该栏目是否含有子栏目?(php判断https)

  • 个人免征税额
  • 没达到起征点需要申报吗
  • 个体户开票超过500万能注销吗
  • 预收款方式销售货物
  • 合并后税务局的全称是什么
  • 员工报销款可以公转私吗
  • 代扣代缴个税返点怎么申请
  • 企业所得税税前扣除和不扣除的区别
  • 政府性搬迁补偿收入的税务处理
  • 上期留抵税额如何计算
  • 冲减成本怎么做会计分录
  • 免税企业如何做年终汇算清缴
  • 房产空置怎么判定
  • 行政机关作出下列行为属于行政复议的范围
  • 增值税普通发票和普通发票的区别怎么交税
  • 公司股票卖出会计处理
  • 营改增后停车费税率
  • 金税盘可以异地使用吗
  • 代开的专票怎么做账?
  • 充值卡多长时间到账
  • 代收代付业务怎么交税
  • 税前净利润等于什么
  • 个人所得税专项扣除夫妻双方都填吗?
  • 交易性金融资产属于什么科目
  • 怎么处理坏账准备的问题
  • 鬓角头发剃光了多久能长好
  • php获取当前网址
  • 技术维护服务费
  • 自定义max函数
  • 转让费交什么税
  • 分公司不享受小规模纳税
  • 税前扣除 发票
  • 开源 okr
  • 劳务人员劳务费走薪资还是走报销
  • 破产审计需要几年的账
  • 金税盘发票报送失败怎么办
  • 增值税发票有哪些项目
  • 企业所得税汇算清缴操作流程
  • 知道收入不知道成本
  • 弃置费用怎么处理
  • 以前年度损益调整
  • 买理财产品的风险
  • 养老保险和工伤失业保险不在一个时间
  • 期末调汇的会计怎么做账
  • 减免的税金怎样做会计分录
  • 资产减值损失什么科目
  • 税控盘费用进什么科目
  • 农民农作物补偿标准文件
  • 原材料运费如何入账
  • mysql绿色版和安装版有什么区别
  • 用SELECT... INTO OUTFILE语句导出MySQL数据的教程
  • MS-SQL Server 2005 其中三个版本的比较
  • sqlserver用户权限不给增删查改表结构权限
  • fedora linux安装教程
  • vsftpd.service disabled
  • xp系统要求
  • edif是什么文件
  • 系统运行缓慢解决方法
  • mac锁定快捷键
  • centos7手册
  • vim编辑器命令大全
  • win8.1技巧
  • WIN10怎么彻底删除works2
  • cocos2dx安装和初步使用
  • jquery炫酷效果
  • unity3d ik
  • angular 嵌入html
  • 什么是质数
  • 每天一篇小练笔主题
  • javascript要怎么学
  • android获取手机的基本信息
  • javascript面向对象编程指南 pdf
  • 陕西税务平台
  • 怎样看业务序号
  • 广东税务数字化平台官网
  • 临沂学生医疗保险多少钱
  • 广东地方税务局官网
  • 车船使用税税
  • 广州地税微信公众号
  • 土地增值税清算管理规程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设