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

  • 主管税务机关是否参与清算
  • 未分配利润分配顺序
  • 个人所得税当月计提下月申报
  • 怎么把预付账款转到管理费用
  • 出口不退税进项税如何处理
  • 一次性奖金并入综合所得
  • 销售金银首饰消费税怎么算
  • 无形资产报废会计科目
  • 银行存款的会计处理方法
  • 废弃土地的使用年限
  • 税率变化递延所得税资产如何调整
  • 不动产税征收标准
  • 退预收账款需要什么原始凭证
  • 二手房分析总结范文
  • 该纳税人不属于经备案的二手车企业
  • 免税品销售有增值税吗
  • 小微企业的免税标准
  • 行政事业单位2014年前已交社保费
  • 哪几种跨省邮寄发票是违法的?
  • 劳务派遣差额征税政策
  • 承兑跨省是不是不能用
  • 派发现金红利怎么知道有没有
  • 本年固定资产投资额与不良贷款的关系
  • 如何增加发票数量和额度
  • 汇率变动引起的经济危机
  • 耕地建厂房补偿方法
  • 社保基数如何计算单位和个人承担多少
  • macos10.15.7更新
  • 代扣可以退款吗
  • linux中php的作用
  • 支付宝流量红包怎么取消
  • 企业所得税费用扣除比例
  • win7系统网络一直转圈,什么都打不开
  • 交易性金融资产属于什么科目
  • linux怎么自己写命令
  • 日记账登记错了怎么办
  • 企业购入固定资产一次性税前扣除
  • 失业保险稳岗补贴是什么意思
  • 强化税收风险意识
  • zmweb.exe是什么进程
  • 生育津贴有什么补贴
  • 采用定额法计算产品成本,其程序如何?
  • 新准则预付账款计算公式
  • gunzip命令压缩
  • 一般纳税人增值税结转账务处理
  • 公司购买银行理财会计分录
  • 其他综合收益涉及到的业务
  • 购买用品开专票怎么开
  • 销售不动产统一发票英文翻译
  • 印花税减征比例
  • 企业有哪些固定资产
  • 工人晚上加班的说说心情
  • 应收账款的账期是什么意思
  • 委托加工存货收回后直接用于销售的账务处理
  • 网络平台服务商
  • 盈余公积的提取基数
  • 税务局收款收据
  • 递延收益确认的递延所得税资产有期限吗
  • 增值税进项发票抵扣认证流程
  • 国内佣金如何入账
  • sql语句中单引号怎么打
  • 电脑上view是什么意思
  • Win10 Mobile 10572预览版上手体验视频
  • Windows虚拟内存不足
  • popupblocker是什么
  • win10系统自带虚拟机无法启
  • [置顶] [寒江孤叶丶的Cocos2d-x之旅_29]在Cocos2d-x中集成protobuf (Protocol Buffers)
  • shell获取文件内容给变量
  • vue_api_server
  • linux中w命令详解
  • unity操作教程
  • 手游开发商和发行商有哪些
  • 动态生成xml
  • 济南税务局投诉电话
  • 未开票收入如何申报增值税
  • 律师到税务机关调取信息
  • 福建税务局网上办税
  • 契税计税依据含装修费吗
  • 土地规划资质业务范围
  • 保险行业税务处理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设