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

  • 消除电商竞争压力,购物中心的四项修炼(电商竞争激烈)

    消除电商竞争压力,购物中心的四项修炼(电商竞争激烈)

  • T3出行怎么添加途经点(t3出行怎么添加新地址)

    T3出行怎么添加途经点(t3出行怎么添加新地址)

  • p30pro拍照失真怎么办(华为p30pro拍照失真)

    p30pro拍照失真怎么办(华为p30pro拍照失真)

  • oppoa5忘记密码如何自己刷机(oppoa5忘记密码如何解开)

    oppoa5忘记密码如何自己刷机(oppoa5忘记密码如何解开)

  • b站音频怎么下载到手机(b站音频怎么下载到本地)

    b站音频怎么下载到手机(b站音频怎么下载到本地)

  • 怎么通过微信知道对方的更多信息(怎么通过微信知道抖音号)

    怎么通过微信知道对方的更多信息(怎么通过微信知道抖音号)

  • 为什么抖音音浪不显示(为什么抖音音浪越来越少)

    为什么抖音音浪不显示(为什么抖音音浪越来越少)

  • 252掩码是几个IP(255.255.253 掩码的ip范围)

    252掩码是几个IP(255.255.253 掩码的ip范围)

  • 苹果7phome键按不下去怎么回事(苹果7phome键按不能用怎么办)

    苹果7phome键按不下去怎么回事(苹果7phome键按不能用怎么办)

  • 微信卡券怎么删除(微信卡券怎么删除不想要的)

    微信卡券怎么删除(微信卡券怎么删除不想要的)

  • 微信删了好友对方列表里还有我吗(微信删了好友对方有显示吗)

    微信删了好友对方列表里还有我吗(微信删了好友对方有显示吗)

  • 钉钉打卡范围最大多少米(钉钉打卡范围最多可以设置多少米)

    钉钉打卡范围最大多少米(钉钉打卡范围最多可以设置多少米)

  • 华为手机照片无法移入保密柜(华为手机照片无故损坏)

    华为手机照片无法移入保密柜(华为手机照片无故损坏)

  • 华为充电器接口有几种(华为充电器接口英文怎么读)

    华为充电器接口有几种(华为充电器接口英文怎么读)

  • 4g卡怎么办(4G卡怎么办)

    4g卡怎么办(4G卡怎么办)

  • 为什么手机显示耳机模式,听不见语音(为什么手机显示无法访问移动网络)

    为什么手机显示耳机模式,听不见语音(为什么手机显示无法访问移动网络)

  • ipadair3和mini5的区别(ipadmini5和ipadair3哪个更值得买)

    ipadair3和mini5的区别(ipadmini5和ipadair3哪个更值得买)

  • 抖音的玩法和技巧(抖音的玩法技巧和规则)

    抖音的玩法和技巧(抖音的玩法技巧和规则)

  • 快手极速版视频怎么暂停(快手极速版视频自动翻视频)

    快手极速版视频怎么暂停(快手极速版视频自动翻视频)

  • vivo手机怎么开sos(vivo手机怎么开宿舍空调)

    vivo手机怎么开sos(vivo手机怎么开宿舍空调)

  • 电子版ptf是什么意思(电子版pdf格式是什么意思)

    电子版ptf是什么意思(电子版pdf格式是什么意思)

  • word内测边距怎么设置(word2016内侧边距)

    word内测边距怎么设置(word2016内侧边距)

  • iqoo后面的灯怎么亮(iqoo后面灯怎么打开)

    iqoo后面的灯怎么亮(iqoo后面灯怎么打开)

  • macos monterey怎么降级系统?macos monterey降级系统教程(macos monterey怎么降级)

    macos monterey怎么降级系统?macos monterey降级系统教程(macos monterey怎么降级)

  • 附加税申报表怎么做
  • 小规模纳税人进项发票怎么做账
  • 环境保护税是什么科目
  • 小规模纳税人工程款税率是多少
  • 中级税务师报名条件
  • 代收水电费的账务处理
  • 企业会计准则利润表本期金额
  • 个体工商户网上报税流程
  • 新会计准则中资产减值论文
  • 银行存款支付现金股利属于什么科目
  • 耕地占用税的纳税人是谁
  • 运输过程中的货损责任
  • 长期股权投资属于金融资产吗
  • 房租有进项发票能抵扣吗
  • 我国流转税主要包括
  • 亏损企业股东年底借钱未还
  • 个人房源可以委托别人吗
  • 企业怎么进行税务申报
  • 小规模纳税人出售不动产征收率
  • 小微企业免征增值税条件
  • 企业所得税季报资产总额怎么填
  • 挖掘机折旧怎么计算
  • 租用服务器会泄漏数据吗
  • 保险公司退还保费
  • 印花税分配比例
  • 非居民企业间接转让中国应税财产
  • 新手会计怎么入门做账
  • win10玩红警卡顿怎么解决
  • windows10 20h2 2004
  • win7电脑怎么开
  • 更新网页证书
  • 普通发票主营业务收入销项负数发票怎么做账
  • PHP:getallheaders()的用法_Apache函数
  • 贸易公司如何办理产地证
  • uniapp+uview
  • 车辆购买保险发票未回怎么做会计分录
  • 递延收益摊销金额
  • 餐饮定额发票能报销吗怎么报销
  • 2023年会出什么车
  • laravel event
  • while循环语法结构
  • 固定资产停止使用还要折旧吗
  • 城镇土地使用税征收标准及计算方法
  • vue获取dom元素的方法
  • 电汇和票汇
  • 应付劳务费怎么做账
  • 人工费暂估怎么做分录
  • 债务重组账务记忆口诀
  • 子公司提的盈余公积合并时如何抵消
  • 职工教育经费能开专票吗
  • 开票怎么凑齐小票
  • 管理费用不可以税前抵扣的利润表怎么填写
  • 退休后的税费
  • 公司注销项目怎么办
  • 水泥销售技巧
  • 代扣个人所得税怎么算
  • 如何审计主营业务收入的真实性问题
  • windows8出现蓝屏
  • solaris 11.4
  • win7和2008r2
  • Mac OS X El Capitan公测版下载地址及安装教程图解
  • win8怎么查看ip地址
  • win8语音助手怎么关闭
  • windows中复制文件的几种方法
  • win8系统怎么设置无线网连接啊
  • windows7组织
  • 飞行歌曲
  • linuxyum安装php7
  • 批处理计算的特点
  • js获取指定元素
  • 批处理 重命名
  • unity3d 画线
  • js过滤filter
  • Base64、DES、MD5加密解密原理
  • javascriptjs
  • 纪检委是干什么工作的能管理税务管理局吗
  • 株洲购房契税减半流程查询
  • 国家税务总局好进吗
  • 贵州网上办税服务厅登录
  • 税务系统个人业务自传
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设