65 lines
1.4 KiB
Go
65 lines
1.4 KiB
Go
package main
|
||
|
||
import (
|
||
"flag"
|
||
"log"
|
||
"sync"
|
||
"weatherstation/internal/database"
|
||
"weatherstation/internal/server"
|
||
)
|
||
|
||
func main() {
|
||
// 命令行参数
|
||
var webOnly = flag.Bool("web", false, "只启动Web服务器(Gin)")
|
||
var udpOnly = flag.Bool("udp", false, "只启动UDP服务器")
|
||
flag.Parse()
|
||
|
||
// 设置日志
|
||
server.SetupLogger()
|
||
|
||
// 初始化数据库连接
|
||
_ = database.GetDB() // 确保数据库连接已初始化
|
||
defer database.Close()
|
||
|
||
// 根据命令行参数启动服务
|
||
if *webOnly {
|
||
// 只启动Web服务器
|
||
log.Println("启动Web服务器模式...")
|
||
if err := server.StartGinServer(); err != nil {
|
||
log.Fatalf("启动Web服务器失败: %v", err)
|
||
}
|
||
} else if *udpOnly {
|
||
// 只启动UDP服务器
|
||
log.Println("启动UDP服务器模式...")
|
||
if err := server.StartUDPServer(); err != nil {
|
||
log.Fatalf("启动UDP服务器失败: %v", err)
|
||
}
|
||
} else {
|
||
// 同时启动UDP和Web服务器
|
||
log.Println("启动完整模式:UDP + Web服务器...")
|
||
|
||
var wg sync.WaitGroup
|
||
wg.Add(2)
|
||
|
||
// 启动UDP服务器
|
||
go func() {
|
||
defer wg.Done()
|
||
log.Println("正在启动UDP服务器...")
|
||
if err := server.StartUDPServer(); err != nil {
|
||
log.Printf("UDP服务器异常退出: %v", err)
|
||
}
|
||
}()
|
||
|
||
// 启动Web服务器
|
||
go func() {
|
||
defer wg.Done()
|
||
log.Println("正在启动Web服务器...")
|
||
if err := server.StartGinServer(); err != nil {
|
||
log.Printf("Web服务器异常退出: %v", err)
|
||
}
|
||
}()
|
||
|
||
wg.Wait()
|
||
}
|
||
}
|