import { ref } from 'vue';
import * as StompJs from '@stomp/stompjs';
 
export default function createWebSocketService() {
  const isConnected = ref(false); // WebSocket连接状态标志位
  
  let client; // Stomp客户端对象
  
  async function connectToServer() {
    try {
      if (client) {
        await disconnect(); // 如果已经存在连接则断开当前连接
      }
      
      client = new StompJs.Client({}); // 初始化Stomp客户端对象
      
      client.configure({ heartbeatIncoming: 0 }); // 配置心跳间隔（单位：毫秒）
      
      await client.activate(); // 激活Stomp客户端
      
      console.log('成功连接到WebSocket服务器');
      
      isConnected.value = true; // 更新连接状态标志位

      
      // 添加其他处理逻辑...
    } catch (error) {
      console.error('无法连接到WebSocket服务器', error);
      
      setTimeout(() => {
        retryConnecting(); // 失败后等待一段时间再次尝试连接
      }, 5000);
    }
  }
  
  async function disconnect() {
    if (!isConnected.value || !client) return;
    
    await client.deactivate(); // 取消激活Stomp客户端
    
    console.log('与WebSocket服务器断开连接');
    
    isConnected.value = false; // 更新连接状态标志位
  }
  
  function retryConnecting() {
    connectToServer().catch((error) => {
      console.error('重连失败', error);
      
      setTimeout(() => {
        retryConnecting(); // 失败后等待一段时间再次尝试连接
      }, 5000);
    });
  }
  
  return {
    isConnected,
    connectToServer,
    disconnect,
  };
}