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)
|
|||
|
|
}
|
|||
|
|
}
|