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

  • iqooneo5s支持66W闪充吗(iqooneo5是闪充还是快充)

    iqooneo5s支持66W闪充吗(iqooneo5是闪充还是快充)

  • 斗鱼热度是人数吗(斗鱼热度和实际人数)

    斗鱼热度是人数吗(斗鱼热度和实际人数)

  • 探探发消息别人收不到(探探给人发消息别人看不到)

    探探发消息别人收不到(探探给人发消息别人看不到)

  • 怎么用电脑打出乘号(怎么用电脑打出@符号)

    怎么用电脑打出乘号(怎么用电脑打出@符号)

  • win10电脑连不上iphone热点(win10电脑连不上网)

    win10电脑连不上iphone热点(win10电脑连不上网)

  • 华为mate30有没有无线充电功能(华为mate30有没有nfc功能)

    华为mate30有没有无线充电功能(华为mate30有没有nfc功能)

  • 苹果手机收藏的文件在哪里可以找到(苹果手机收藏的照片在哪里可以找到)

    苹果手机收藏的文件在哪里可以找到(苹果手机收藏的照片在哪里可以找到)

  • 6gb是多少流量(2.6gb是多少流量)

    6gb是多少流量(2.6gb是多少流量)

  • word人民币符号怎么打(word人民币符号电脑怎么打)

    word人民币符号怎么打(word人民币符号电脑怎么打)

  • shift+ctrl是什么

    shift+ctrl是什么

  • 怎么下载抖音app软件(海信电视怎么下载抖音app)

    怎么下载抖音app软件(海信电视怎么下载抖音app)

  • 华为平板充电口坏了怎么办(华为平板充电接口坏了怎么修)

    华为平板充电口坏了怎么办(华为平板充电接口坏了怎么修)

  • iwatch按键用法(apple watch 按键)

    iwatch按键用法(apple watch 按键)

  • 小度在家能直播电视吗(小度怎么开直播)

    小度在家能直播电视吗(小度怎么开直播)

  • 华为畅连通话要钱吗(华为畅连通话要流量吗)

    华为畅连通话要钱吗(华为畅连通话要流量吗)

  • 手机费电快是什么原因(手机费电快是什么原因红米)

    手机费电快是什么原因(手机费电快是什么原因红米)

  • yue的四声调(月的四声调)

    yue的四声调(月的四声调)

  • 文件设置为只读怎么弄(psd文件设置为只读)

    文件设置为只读怎么弄(psd文件设置为只读)

  • 虾米音乐怎么下载不了(虾米音乐怎么下载mv)

    虾米音乐怎么下载不了(虾米音乐怎么下载mv)

  • 华为荣耀9i有人脸识别吗(荣耀9iemui)

    华为荣耀9i有人脸识别吗(荣耀9iemui)

  • switch可以连笔记本屏幕吗(switch可以连笔记本屏幕吗hdmi)

    switch可以连笔记本屏幕吗(switch可以连笔记本屏幕吗hdmi)

  • oppo reno怎样隐藏app(opporeno怎样隐藏返回键)

    oppo reno怎样隐藏app(opporeno怎样隐藏返回键)

  • 如何关闭Windows中的MMCSS服务(如何关闭windows10自动更新)

    如何关闭Windows中的MMCSS服务(如何关闭windows10自动更新)

  • SQL Server详细使用教程(包含启动SQL server服务、建立数据库、建表的详细操作) 非常适合初学者(sql server2016使用)

    SQL Server详细使用教程(包含启动SQL server服务、建立数据库、建表的详细操作) 非常适合初学者(sql server2016使用)

  • 企业所得税会计科目
  • 应交所得税的计税依据
  • 增值税普通发票和电子普通发票的区别
  • 已申报税额是指啥
  • 收到工程服务费会计分录
  • 已启动申报比对异常申报,可以作废嘛清卡吗
  • 固定资产加速折旧的方法有哪些
  • 食堂临聘人员的管理、考核
  • 银行存款可以红字吗
  • 国家相关规定出车补助的文件
  • 房产经纪公司成本费用
  • 个税手机号码没有了怎么办
  • 个人到税务局开增值税专用发票
  • 外汇结汇的方法有哪些呢?
  • 税控系统维护费账务处理
  • 给了钱不给发票可以报警吗
  • 所有的企业都能采用免费策略
  • 教育经费税前扣除标准
  • 特许权使用费如何确认收入
  • 在建工程预付款项记入什么会计科目
  • 在产品,产成品和库存商品的区别
  • 一次性发放几个月的工资怎么申报
  • 环境保护税的计算例题
  • 购买食堂餐具开票怎么开
  • 小规模纳税人增值税优惠政策2023
  • 个税计算方法举例讲解
  • 信用减值损失借方余额在利润表中
  • 个税申报密码是什么意思
  • 企业是核定征收还是查账征收怎么查
  • 如何玩转win11
  • 管理费用怎么结转分录
  • xbox无法连接无线网络
  • win11怎么打开设置
  • 委托代销商品的代销费用
  • 微信小程序下单可以退款吗
  • 购买土地缴纳契税
  • php xdebug配置
  • 小规模纳税人的企业所得税税率
  • cnn数据集
  • mysql安装配置教程csdn
  • 新版发票填开操作流程
  • 个体工商户经营所得税税率表2023年
  • 已经认证抵扣的发票怎么红冲
  • 工会经费税务代收是什么意思
  • 抵扣的进项税如何做账
  • 增值税一般纳税人登记管理办法
  • 增值税加计抵减是什么意思
  • 损益类科目如何记忆
  • 期初建账库存现金如何填写
  • 冲销销售收入分录
  • 开票必须填写开户银行吗
  • 应交税费应交增值税已交税金怎么用
  • 发票系统升级后怎样开票
  • 企业所得税必须预缴吗
  • 新准则融资租赁承租人的会计处理
  • sql语句行转列
  • java下一页
  • sql查询方法有哪些
  • windows7开机黑屏安全模式也进不去
  • win7自带截图保存在哪个文件夹
  • services.exe修改注册表
  • ikeeperpab.exe是什么
  • 彻底关闭windows10自动更新工具
  • win7提示无法访问权限
  • win10找不到打印机驱动
  • win8系统如何打开摄像头
  • win8 应用商店
  • unity对象池优缺点
  • jquery.js
  • 新闻客户端有哪些?
  • java中初始化顺序
  • python rgb转cmyk
  • nodejs前后端数据交互
  • shell线程操作命令
  • 2024年全年计划
  • python mp3play
  • 收到虚开的增值税专用发票
  • 日本互联网金融发展
  • 小规模纳税人租赁房屋税率
  • 美国汽车进口关税25%
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设