53 lines
1.4 KiB
Go
53 lines
1.4 KiB
Go
// 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)
|
||
}
|
||
}
|