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

  • tim的空间动态在哪(tim空间动态怎么设置权限)

    tim的空间动态在哪(tim空间动态怎么设置权限)

  • 电话被拉黑了信息能发过去吗(电话被拉黑了信息还能发出去吗)

    电话被拉黑了信息能发过去吗(电话被拉黑了信息还能发出去吗)

  • 微信点在看有什么用(微信在看点了可以取消吗)

    微信点在看有什么用(微信在看点了可以取消吗)

  • 微信步数为什么走了没有更新(微信步数为什么突然看不到对方了)

    微信步数为什么走了没有更新(微信步数为什么突然看不到对方了)

  • 苹果xsmax屏下指纹(苹果xs max主屏幕按钮)

    苹果xsmax屏下指纹(苹果xs max主屏幕按钮)

  • 手机号多久不用变空号(手机号多久不用会被回收)

    手机号多久不用变空号(手机号多久不用会被回收)

  • word表格居中不在中间(word表格居中不在正中,偏右)

    word表格居中不在中间(word表格居中不在正中,偏右)

  • 苹果手机所有软件都打不开(苹果手机所有软件打不开也不能关机)

    苹果手机所有软件都打不开(苹果手机所有软件打不开也不能关机)

  • 电话屏幕闪是怎么回事(电话屏闪烁是怎么回事)

    电话屏幕闪是怎么回事(电话屏闪烁是怎么回事)

  • 苹果平板插卡版和wifi版有什么区别(苹果平板插卡版可以用wifi吗)

    苹果平板插卡版和wifi版有什么区别(苹果平板插卡版可以用wifi吗)

  • iphone闹钟会自己停吗(iphone闹钟自动响)

    iphone闹钟会自己停吗(iphone闹钟自动响)

  • 查找快捷键ctrl加什么(查找快捷键ctrl加A)

    查找快捷键ctrl加什么(查找快捷键ctrl加A)

  • 华为手机忘了锁屏密码怎么快速解开(华为手机忘了锁屏密码怎么刷机)

    华为手机忘了锁屏密码怎么快速解开(华为手机忘了锁屏密码怎么刷机)

  • 微信图片怎么放大不了(微信图片怎么放到表格里)

    微信图片怎么放大不了(微信图片怎么放到表格里)

  • 电脑忘记密码怎么重置(电脑忘记密码怎么重装系统)

    电脑忘记密码怎么重置(电脑忘记密码怎么重装系统)

  • 华为mate30有呼吸灯么(华为mate30呼吸灯闪烁在哪里设置)

    华为mate30有呼吸灯么(华为mate30呼吸灯闪烁在哪里设置)

  • 苹果前呼吸灯在哪里设置(苹果呼吸灯在哪里设置持续闪烁)

    苹果前呼吸灯在哪里设置(苹果呼吸灯在哪里设置持续闪烁)

  • c语言程序开发的步骤(c语言程序开发的六个阶段)

    c语言程序开发的步骤(c语言程序开发的六个阶段)

  • 电池优化是允许还是不允许(忽略电池优化)

    电池优化是允许还是不允许(忽略电池优化)

  • 饿了么首单立减怎么用(饿了么首单立减是谁出钱)

    饿了么首单立减怎么用(饿了么首单立减是谁出钱)

  • 苹果相册隐藏怎么复原(苹果相册隐藏怎么打开)

    苹果相册隐藏怎么复原(苹果相册隐藏怎么打开)

  • 电脑怎么关掉360(电脑怎么关掉360休眠壁纸)

    电脑怎么关掉360(电脑怎么关掉360休眠壁纸)

  • phpcms的域名后期可以更改吗?(php指定域名访问)

    phpcms的域名后期可以更改吗?(php指定域名访问)

  • 缴纳代扣个人所得税分录
  • 印花税额计算及计税基础
  • 审核记账对账结果怎么写
  • 培训学校可以不可以用燃气取暖炉
  • 医药行业发票税率
  • 建筑劳务公司税负率多少才合适
  • 税务结清后多少时间内工商需要注销
  • 房产公司售楼部装修费入什么会计科目
  • 10万以内免交的增值税怎么做帐
  • 公司员工的伙食费计入什么科目
  • 收回以前年度的应收账款,怎么进行账务处理?
  • 白条入账的会计分录
  • 债务重组是什么意思?
  • 零售商品收入会计分录
  • 酒店购买毛巾客房领用怎么做会计分录?
  • 社保基金的管理模式
  • 会务费 发票
  • 交际应酬费用
  • 租赁类专票不含增值税吗
  • 自然灾害造成的存货净损失计入什么科目
  • 职业年金属于应交税费吗
  • 企业进项税和销项税抵扣政策
  • 收回税款 会计分录
  • 教育费附加记账
  • 公司可以对公司罚款吗
  • 单位撤销无力支付怎么办
  • 外账进销存单据是怎么弄的?
  • 电脑管家如何深度访问
  • 影响资金等值的三个因素
  • 农民合作社扶持政策
  • 申报高新企业的当年一定要研发费用加计扣除吗
  • 开发商未出售的房子有产权证吗
  • 地方水利建设基金
  • 文件夹正在使用,操作无法完成
  • win7旗舰版如何恢复出厂设置
  • 怎么扣除税费
  • k210中文手册
  • uniapp支付流程
  • 如何进行企业商务谈判
  • 土地增值税的具体规定
  • PHP:mcrypt_get_cipher_name()的用法_Mcrypt函数
  • vue环境搭建的几种方法
  • 买货没发票如何入账?
  • 应交税费是借增还是贷增?
  • 国家给农民的青春有哪些
  • 增值税专用发票有几联?
  • 一般纳税企业增值税的核算应当使用
  • 增值税发票认证期限最新规定
  • 零申报年报需要哪些表格
  • 银行利息怎么算10万块三年多少利息
  • 金税四期对会计人员要求高吗
  • 小规模纳税人和一般纳税人的区别
  • 购进固定资产的账务处理
  • 固定资产折旧提头不提尾
  • 企业会计制度对固定资产无入账价值怎么入账
  • 企业对外借款是什么意思
  • 为员工购买意外保险
  • 代扣代缴的个人所得税在现金流量表
  • 外汇申报材料
  • 流量对比
  • 分公司设立条件怎么写
  • mysql备份与恢复数据库
  • windows10安装教程u盘安装
  • 了解的近义词
  • ubuntu系统如何
  • win10 mobile下载
  • Linux进入图形界面卡顿
  • sudo service: command not found 报错的解决方法
  • windows8安装步骤
  • win7系统自动弹出搜索框
  • win8.1系统升级
  • 不得不佩服自己的搞笑说说
  • jquery 定位
  • nodejs bff
  • ug10避让怎么设置
  • cocos2d-x安装
  • 风险研判能力不足的原因
  • 天津税务查询电话
  • 下载广东省电子税务局appp
  • 太原公安分局有几个
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设