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

  • 华为gt3pro怎么调时间(华为gt3pro功能)

    华为gt3pro怎么调时间(华为gt3pro功能)

  • 微信实名认证没有银行卡怎么绑定(微信实名认证没有身份证可以认证吗)

    微信实名认证没有银行卡怎么绑定(微信实名认证没有身份证可以认证吗)

  • lpddr4和ddr4的区别(lpddr4与ddr4哪个读写速度更快)

    lpddr4和ddr4的区别(lpddr4与ddr4哪个读写速度更快)

  • 苹果电池变成黄颜色怎么调绿(苹果电池变成黄色了怎么办)

    苹果电池变成黄颜色怎么调绿(苹果电池变成黄色了怎么办)

  • 华为慢动作只能10秒(华为慢动作只能拍)

    华为慢动作只能10秒(华为慢动作只能拍)

  • iqoo3防水级别(iqooz3防水等级)

    iqoo3防水级别(iqooz3防水等级)

  • 手机无线叹号不可上网(手机无线叹号不闪烁)

    手机无线叹号不可上网(手机无线叹号不闪烁)

  • 为什么微信视频动态删不掉(为什么微信视频总是黑屏)

    为什么微信视频动态删不掉(为什么微信视频总是黑屏)

  • 苹果保修期和激活日期不对(苹果保修期和激活日期差20天正常吗)

    苹果保修期和激活日期不对(苹果保修期和激活日期差20天正常吗)

  • 华为手机换屏为什么电池也换(华为手机换屏为什么还要换电池)

    华为手机换屏为什么电池也换(华为手机换屏为什么还要换电池)

  • 快手直播卡顿怎么解决(快手直播间卡顿怎么办)

    快手直播卡顿怎么解决(快手直播间卡顿怎么办)

  • 苹果手机为什么无法语音输入(苹果手机为什么屏幕会突然变暗)

    苹果手机为什么无法语音输入(苹果手机为什么屏幕会突然变暗)

  • 爱奇艺购买电影是永久的吗(爱奇艺购买电影后怎么检票)

    爱奇艺购买电影是永久的吗(爱奇艺购买电影后怎么检票)

  • 苹果11出厂有贴膜吗(苹果11原厂有贴膜吗)

    苹果11出厂有贴膜吗(苹果11原厂有贴膜吗)

  • 小米手环4睡眠怎么弄(小米手环4睡眠监测)

    小米手环4睡眠怎么弄(小米手环4睡眠监测)

  • 小米9pro4g卡可以用吗(小米9pro5g怎么装卡)

    小米9pro4g卡可以用吗(小米9pro5g怎么装卡)

  • 微信国旗图标怎么打出(微信国旗图标怎么去掉)

    微信国旗图标怎么打出(微信国旗图标怎么去掉)

  • 头条号双标题在哪开通(头条号双标题在哪里设置)

    头条号双标题在哪开通(头条号双标题在哪里设置)

  • 抖音点赞取消了对方还能看见吗(抖音点赞取消了他还能看到吗)

    抖音点赞取消了对方还能看见吗(抖音点赞取消了他还能看到吗)

  • 微信电话没声音怎么回事(微信电话没声音是什么原因)

    微信电话没声音怎么回事(微信电话没声音是什么原因)

  • line服务器当前无响应(手机line服务器当前无响应)

    line服务器当前无响应(手机line服务器当前无响应)

  • 怎么查找手机删除的软件(怎么查找手机删除的信息内容)

    怎么查找手机删除的软件(怎么查找手机删除的信息内容)

  • wps表格怎么保存到桌面(wps表格怎么保存为pdf格式)

    wps表格怎么保存到桌面(wps表格怎么保存为pdf格式)

  • 房地产开发企业简易计税方法 可以扣除吗
  • 增值税一般纳税人证明文件
  • 已在境外缴纳的企业所得税税额 分国不分项
  • 收取境外服务费收入如何开票
  • 工会经费与残保金的取数是一致吗
  • 清包工取费标准
  • 自然人报税系统怎么进入单位报税系统
  • 六大往来科目重分类分录
  • 其他综合收益是什么类科目
  • 银行开户费用计入
  • 退股分红什么意思
  • 公允价值变动损益会计处理
  • 建设工程项目融资
  • 建筑业挂靠核定征收会计分录怎么写?
  • 代账报税软件哪个好
  • 淘宝开企业店铺需要什么资料
  • 房产税实施城市
  • 代理费是指
  • 借用别人的公司经营
  • 公司一般账户不用了会怎么样
  • 如何通过路由器查看宽带账号密码
  • 外购货物用于职工奖励
  • 公司股票 收税
  • 期货手续费是双向收取吗
  • PHP:mcrypt_generic_init()的用法_Mcrypt函数
  • php的框架有哪些
  • 拥有自我意识的动物有哪些
  • vue2路由跳转页面不刷新问题
  • 计提的附加税
  • 孪生神经网络 计算相似度
  • 数字图像处理实验一实验报告
  • 投稿p2
  • 固定资产折旧四种方法公式
  • 出口收汇手续费做什么科目
  • 银行存款向灾区捐款
  • 证券公司代理发行
  • 筹办期发生业务怎么办
  • ubuntu下安装windows
  • phpcms添加内容
  • 应付福利费算支出吗
  • 普通发票的后续怎么开
  • 关于预计净残值的计算题及答案
  • 为什么合理损耗不计入成本
  • 在软件中的操作有哪些
  • 疫情期间社保减免优惠政策几个月
  • 事业单位未取得相关证书不予受理
  • 股东分红的会计分录怎么做
  • 新成立的公司能干吗
  • 销售费属于期间费用
  • 第二个季度
  • 预付账款长期挂账的合理原因
  • 金蝶k3如何反记账
  • 其他应付款在借方表示什么
  • 会计收入的定义和分类
  • 明细账摘要写错了怎么修改
  • 清除sql表内容
  • 怎么统计每日产量
  • mysql改造
  • mysql的多表查询语句
  • sqlserver如何保留两位小数
  • 被遗忘的战役
  • 数据库的行和列的叙述
  • 腾讯云centos7有界面吗
  • xp关机会自动重新启动
  • solaris 11.3
  • linux系统中cp命令
  • 系统警告设置
  • windows 8.1更新
  • win10系统局域网共享打印机设置
  • linux怎么安装sh
  • unity game optimization
  • nodejs npm package.json中文文档
  • Linux修改tomcat默认端口号8080
  • unity ugui合批
  • linux读出文件
  • SQLite3中文编码 Python的实现
  • nodejs常用内置模块
  • js如何使用
  • js中如何在div里写入内容
  • 佛山电动摩托车能上牌吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设