// Package main 应用程序入口 // 初始化配置、数据库、WebSocket Hub,启动HTTP服务 // API服务运行在16702端口,WebSocket服务运行在16703端口 package main import ( "fmt" "log" "net/http" "excel-api/config" "excel-api/models" "excel-api/router" ws "excel-api/websocket" ) func main() { // 第一步:加载配置文件 if err := config.Init(); err != nil { log.Fatalf("加载配置文件失败: %v", err) } log.Println("配置文件加载成功") // 第二步:初始化数据库连接 if err := models.InitDB(); err != nil { log.Fatalf("初始化数据库失败: %v", err) } // 第三步:创建并启动WebSocket Hub hub := ws.NewHub() go hub.Run() log.Println("WebSocket Hub 已启动") // 第四步:启动WebSocket独立服务(端口16703) wsAddr := fmt.Sprintf(":%d", config.App.Server.WsPort) wsRouter := http.NewServeMux() wsRouter.HandleFunc("/ws", ws.HandleWebSocketHTTP(hub)) go func() { log.Printf("WebSocket服务启动,监听端口 %s", wsAddr) if err := http.ListenAndServe(wsAddr, wsRouter); err != nil { log.Printf("WebSocket服务启动失败: %v", err) } }() // 第五步:配置路由并启动API HTTP服务(端口16702) r := router.Setup(hub) apiAddr := fmt.Sprintf(":%d", config.App.Server.Port) log.Printf("API服务启动,监听端口 %s", apiAddr) if err := r.Run(apiAddr); err != nil { log.Fatalf("API服务启动失败: %v", err) } }