【useWebsocket】vue3+vite封装websocket hooks

本文介绍了如何在Vue应用中使用WebSocket进行通信,包括封装接口、设置连接选项、处理连接状态变化、心跳检测以及断开连接的逻辑。同时提及了与系统存储模块的集成和参数编码方法。

不废话了,直接上干货。可直接食用
ts刚开始用,不合理的地方欢迎指导,虚心请教

import {
   
    onUnmounted, ref } from 'vue'

import {
   
    useSystemStore } from '@/store/modules/systemStore/systemStore'

interface QueryType {
   
   
  url: string //url
  options?: OptionsType //配置
  params?: object //url参数
  onmessage?: Function //回调函数
}
interface OptionsType {
   
   
  maxReconnect?: number //最大重连次数, -1 标识无限重连
  interval?: number //心跳间隔
  timeout?: number //  响应超时时间
  pingMessage?: string // 心跳请求信息
}
const defaultOptions = {
   
   
  maxReconnect: 6,
  interval: 30 * 1000,
  timeout: 10 * 1000,
  pingMessage: 'ping'
}

/**
 * websocket封装
 * @param {object} param0
 * @returns  serverMessage, sendMessage, destroySocket
 */
export default function useWebSocket({
   
    url, options = {
   
   }, params, onmessage }: QueryType) {
   
   
  const OPTION = {
   
    ...defaultOptions, ...options }
  let socket: WebSocket | null = null //websocket实例
  let pingTimeoutObj: NodeJS.Timeout | null = null //延时发送心跳的定时器
  let pongTimeoutObj:
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值