# All files / plugins socket.client.ts

0% Statements 0/39
0% Branches 0/1
0% Functions 0/1
0% Lines 0/39

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48

     import { io, Socket } from 'socket.io-client'

    export default defineNuxtPlugin((nuxtApp) => {
      const config = useRuntimeConfig()
      let socket: Socket | null = null

      const connect = (token: string) => {
        if (socket?.connected) return socket

        socket = io(config.public.wsUrl, {
          auth: { token },
          reconnection: true,
          reconnectionDelay: 1000,
          reconnectionAttempts: 5
        })

        socket.on('connect', () => {
          console.log('WebSocket connected')
        })

        socket.on('disconnect', () => {
          console.log('WebSocket disconnected')
        })

        socket.on('connect_error', (error) => {
          console.error('WebSocket connection error:', error)
        })

        return socket
      }

      const disconnect = () => {
        socket?.disconnect()
        socket = null
      }

      return {
        provide: {
          socket: {
            connect,
            disconnect,
            get instance() {
              return socket
            }
          }
        }
      }
    })