WebSocket封装(TypeScript、单例模式、自动重连、事件监听、Vue中使用)

文章介绍了如何在Vue3应用中使用SocketService类进行WebSocket连接的管理,包括连接状态监控、自动重连选项设置、事件监听和解除监听等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

export type AutoReconnectOptions = boolean | {
   
  maxRetries?: number
  retryInterval?: number
  onMaxRetriesReached?: Function
}

export enum ConnectionStatus {
   
  Disconnected = 'DISCONNECTED',
  Connected = 'CONNECTED',
  Error = 'ERROR'
}

class SocketService {
   
  private static instance: SocketService | null = null
  private ws: WebSocket | null = null
  private listeners: Record<string, Function[]> = {
   }
  private autoReconnect: AutoReconnectOptions = true
  private retries: number = 0
  private connectionStatus: ConnectionStatus = ConnectionStatus.Disconnected

  private constructor() {
   
    this.connect()
  }

  public static getInstance(): SocketService {
   
    if (!SocketService.instance) {
   
      SocketService.instance = new SocketService()
    }
    return SocketService.instance
  }

  public setAutoReconnectOptions(options: AutoReconnectOptions) {
   
    this.autoReconnect = options
  }

  public connect() {
   
    this.ws = new WebSocket('ws://localhost:3000/ws')<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值