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

  • 微博粉丝增加方法有哪些(微博粉丝怎么增加)

    微博粉丝增加方法有哪些(微博粉丝怎么增加)

  • 怎么看腾讯视频会员几个人用(怎么看腾讯视频热度)

    怎么看腾讯视频会员几个人用(怎么看腾讯视频热度)

  • 网易云私信怎么知道对方看没看(网易云私信怎么免打扰)

    网易云私信怎么知道对方看没看(网易云私信怎么免打扰)

  • 华为手机怎么没有更多连接(华为手机怎么没有耳机插孔)

    华为手机怎么没有更多连接(华为手机怎么没有耳机插孔)

  • 荣耀30pro有微距拍摄功能吗(荣耀30pro有微距吗)

    荣耀30pro有微距拍摄功能吗(荣耀30pro有微距吗)

  • 电脑快捷键全部失效(电脑快捷键全部用不了了)

    电脑快捷键全部失效(电脑快捷键全部用不了了)

  • qq资料验证一直不成功(qq资料验证一直失败怎么办)

    qq资料验证一直不成功(qq资料验证一直失败怎么办)

  • 滴滴突然长时间不派单(滴滴突然长时间不付款)

    滴滴突然长时间不派单(滴滴突然长时间不付款)

  • 苹果11怎么将软件隐藏起来(苹果11怎么软件更新)

    苹果11怎么将软件隐藏起来(苹果11怎么软件更新)

  • qq匹配聊天会被别人看到吗(qq匹配聊天会封吗)

    qq匹配聊天会被别人看到吗(qq匹配聊天会封吗)

  • 小米8可以遥控空调吗(小米8遥控器)

    小米8可以遥控空调吗(小米8遥控器)

  • 苹果6电池多少毫安(苹果6电池多少钱原装)

    苹果6电池多少毫安(苹果6电池多少钱原装)

  • ora12170连接超时(ora12535连接超时)

    ora12170连接超时(ora12535连接超时)

  • 荣耀20i处理器(荣耀20i处理器是什么型号)

    荣耀20i处理器(荣耀20i处理器是什么型号)

  • windows无法连接到user profile service服务(windows无法连接到system event notification service)

    windows无法连接到user profile service服务(windows无法连接到system event notification service)

  • 淘宝退款取消后还能申请吗(淘宝退款取消后退款处还有小红点怎么办)

    淘宝退款取消后还能申请吗(淘宝退款取消后退款处还有小红点怎么办)

  • 出版物文件默认的扩展名是(出版物标准排版格式)

    出版物文件默认的扩展名是(出版物标准排版格式)

  • 天机1000是什么处理器(天机1000+是哪款手机)

    天机1000是什么处理器(天机1000+是哪款手机)

  • 台式键盘fn在哪个位置(台式电脑键盘fn在哪)

    台式键盘fn在哪个位置(台式电脑键盘fn在哪)

  • mate10怎么去小圆点(华为mate10怎么关闭小圆)

    mate10怎么去小圆点(华为mate10怎么关闭小圆)

  • aumtl20什么型号(aum-al20是什么型号手机)

    aumtl20什么型号(aum-al20是什么型号手机)

  • draal00什么型号(华为畅享8e青春版参数)

    draal00什么型号(华为畅享8e青春版参数)

  • 微信人脸锁在哪设置(微信怎么开启人脸解锁)

    微信人脸锁在哪设置(微信怎么开启人脸解锁)

  • npm ERR! code E404 在vscode安装插件时报错的解决方案

    npm ERR! code E404 在vscode安装插件时报错的解决方案

  • 人工智能学习——神经网络(matlab+python实现)(人工智能课程心得体会)

    人工智能学习——神经网络(matlab+python实现)(人工智能课程心得体会)

  • 个体工商户工商年报资金数额填啥
  • 商业保理怎么账务处理
  • 分公司企业所得税政策
  • 债务担保属于或有资产吗
  • 水费抵扣进项税税率是多少
  • 会议费报销税务规定
  • 销项负数发票原发票还有用吗?
  • 资产重组的税务筹划
  • 逾期包装物押金消费税会计分录
  • 企业所得税前列支的费用
  • 取得抵债房产的涉税风险,你清楚吗?
  • 车船税交给谁了
  • 支付的专家费怎么入账
  • 如果工程款要不到的话怎么办
  • 记帐凭证怎么制作的
  • 车间办公费计入什么会计科目
  • 固定资产处置流程
  • 盈余积累转增资本的条件
  • 天猫公司不开银行卡吗
  • 上一年度的费用入账需要分摊吗
  • 应付账款周转天数越大说明什么
  • PHP:pg_connection_status()的用法_PostgreSQL函数
  • 上月抵扣的发票怎么开
  • ksysslim.exe是什么
  • php如何读取文件内容
  • 企业雇佣临时工个税
  • Yii2中简单的场景使用介绍
  • 土地使用税计入管理费用还是税金及附加
  • pytorch ln
  • 雷斯岬国家海岸公园有信号吗
  • openvino使用
  • ai工具用法
  • opencv如何显示图片
  • java 字节流 字符流
  • 季初从业人数和季末从业人数怎么填
  • 上个月成本做多了怎么冲账
  • 当月勾选认证可以在下月抵扣吗
  • 红字发票开具错了,是否可以将其作废?
  • mongodb官方文档中文
  • 个人跑运输怎么开发票
  • 分成收入计入什么科目
  • 水电费专用发票模板
  • 修改数据库为多个数据
  • 公司两个股东变更为一个股东,需要交税么
  • 人工费用计入
  • 预付账款借贷方余额
  • 固定资产改造的配件怎么入账
  • 社保费阶段性减免政策到什么时候
  • 金税盘发票认证怎么操作流程
  • 转账支票的密码需要填写吗
  • 企业应交税金包括印花税吗
  • 个税和社保基数不一致怎么办
  • 关联交易定价方法包括
  • mysql序列函数
  • 总结sql执行进展怎么写
  • win8.1补丁打不上
  • windows延缓写入失败怎么修复
  • vmware下ubuntu(linux)与主机文件共享设置的方法
  • win10以管理员身份登录电脑
  • 苹果系统怎么更新
  • ubuntu20.04关闭图形界面命令
  • imac家长控制
  • linux xim
  • win10系统的文件夹选项在哪里
  • windows聚焦失效
  • win10电脑补丁 kb5000802
  • nginx日志切割原理
  • Node.js node-schedule定时任务隔多少分钟执行一次的方法
  • dirsearch批量
  • javascript val
  • python3使用PyMysql连接mysql数据库实例
  • android xml文件有哪几种布局方式
  • jquery-easyui-1.3.3
  • python的面向对象和模块原理
  • 国税怎么打印发票
  • 山西电子税务局手机版
  • 打单子的打印机能否打a4的纸
  • 增值税专用发票提高限额
  • 杭州 国税
  • 成都国税发票领取地点
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设