// 导入依赖
import { ServerManager } from './utils/serverManager';
import { serverConfig } from './config/serverConfig';
import Task from './utils/task';
import { connectToMongo } from './mongo/mongodb';
const router = require('./router/index');

// 初始化MongoDB连接
async function initializeMongoDB() {
  try {
    console.log('开始初始化MongoDB');
    await connectToMongo();
    console.log('MongoDB初始化成功');
  } catch (error) {
    console.error('MongoDB初始化失败:', error);
    process.exit(1); // 如果MongoDB连接失败，退出进程
  }
}

// 创建服务器管理器实例
let serverManager: ServerManager;

// 启动服务器
async function startServer() {
  // 先初始化MongoDB
  await initializeMongoDB();
  
  // 创建服务器管理器实例
  serverManager = new ServerManager(router);

  // 启动所有配置的端口
  serverConfig.ports.forEach(port => {
    const success = serverManager.createServer(port);
    if (success) {
      console.log(`启动成功,服务端口为:${port}`);
    }
  });

  return serverManager;
}

// 启动服务器
startServer().catch(error => {
  console.error('服务器启动失败:', error);
  process.exit(1);
});

// 导出服务器管理器以便其他模块可以使用
export default () => serverManager;

// 注释掉的任务相关代码保留
// const appTask = new Task();
// appTask.openServer()