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

  • 隔月发票退回应该如何操作
  • 采购人员的费用
  • 发票商品类别有哪几种
  • 发票只能全部冲开吗
  • 股权评估与资产评估的关系
  • 技术出口税务处理
  • 采购商品的运费计入成本的会计分录
  • 缴纳城建税会计分录怎么做账
  • 暂估进项税额
  • 支付股权投资的会计科目
  • 电子银行承兑汇票可以拆开吗
  • 营改增的增值税税率
  • 工资条上税基调整是啥意思
  • 商品流水账怎么做
  • 预交增值税扣税绑不了三方
  • 多计提的费用怎么调整
  • 购入苗木的会计分录
  • 偿还借款利息是现金流量什么项目
  • 个体工商户怎样开发票
  • 上个月的流量这个月可以用吗
  • 事业单位项目前景怎么样
  • 成本核算怎么做账
  • 老大心态是什么意思
  • s3tray2.exe - s3tray2是什么进程 有什么用
  • hipsdaemon.exe是什么
  • 当月认证抵扣的进项税发票一定要入帐做成本吗?
  • chrome新建标签为打开特定网页
  • 利润表中的收入是按什么确认的
  • 违约罚款的会计分录
  • 最贵的苹果平板
  • 南极岛在哪
  • Treetop walkway in Hainich National Park, Thuringia, Germany (© mauritius images GmbH/Alamy)
  • “Ninja is required to load C++ extensions”解决方案
  • 已计提的存货跌价准备计入成本吗
  • yolo行人检测
  • critical_section 结构
  • centos+php+coreseek+sphinx+mysql之一coreseek安装篇
  • tar -xvf命令
  • 应交增值税缴纳后入什么费用
  • 物流小规模企业有哪些
  • 农产品收购发票可以抵扣进项税额吗
  • 研发费用属于什么成本
  • 质量赔偿金 计入什么科目
  • 预收账款的会计要素
  • 调整未分配利润影响所得税吗
  • 预付账款需要做预算凭证吗
  • 应纳税所得额的各项扣除包括什么
  • 建设工程的材料质量检测由谁负责
  • SQL查询数据库中表的某一列
  • 公司租赁办公场所,没发票怎么办
  • 应收账款收不回来的情况说明
  • 自建不动产领用原材料增值税进项
  • 备用金账目处理
  • 预收账款的借方余额反映的是
  • 预付账款借方如何结转
  • 专用发票不抵扣要认证吗
  • 软件测试取费标准
  • 销售商品托收承付怎么确认收入
  • 可转换债券转换时的会计处理
  • 右下角小喇叭调不了声音
  • ubuntu server initramfs
  • winxp系统怎么设置开机密码
  • win8系统怎么打开运行
  • Ubuntu 下搭建网站服务器
  • jquery实现回到顶部
  • xp系统explorer停止工作
  • js document.cookie
  • php操作dom
  • 用python做开发
  • android 图片滚动
  • python嵌套语句
  • 编写python代码
  • jquery设计模式
  • Android调用系统的电话拨号程序
  • 税控盘专票作废流程
  • 加油发票如何抵扣
  • 法治税务演讲稿结尾
  • 浙江残保金征收标准
  • 公司如何制定制度
  • 税票电话号码变更影响抵扣吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设