import { io } from 'socket.io-client'
import type { Socket } from 'socket.io-client'
import { SOCKET_CONFIG } from '@/views/businessOperations/commandCenter/command-center.constants'

/** 单例 Socket 实例 */
let instance: Socket | null = null

/**
 * 创建指挥中心 WebSocket 连接（单例）
 * @returns Socket.IO 客户端实例
 */
export const createCommandCenterSocket = (): Socket => {
  if (instance)
    return instance

  const url = import.meta.env.VITE_COMMAND_CENTER_SOCKET_URL || ''

  instance = io(`${url}${SOCKET_CONFIG.NAMESPACE}`, {
    path: SOCKET_CONFIG.PATH,
    transports: [...SOCKET_CONFIG.TRANSPORTS],
    reconnection: true,
    reconnectionDelay: SOCKET_CONFIG.RECONNECTION_DELAY,
    reconnectionDelayMax: SOCKET_CONFIG.RECONNECTION_DELAY_MAX,
    autoConnect: false,
  })

  return instance
}

/**
 * 销毁指挥中心 WebSocket 连接，释放资源
 */
export const destroyCommandCenterSocket = () => {
  if (instance) {
    instance.disconnect()
    instance = null
  }
}
