Files
smart-go/cmd/server/main.go
T
2026-04-23 18:58:13 +08:00

45 lines
838 B
Go

package main
import (
"flag"
"log"
"os"
"os/signal"
"syscall"
"giter.top/smart/pkg/config"
)
var configPath string
func init() {
flag.StringVar(&configPath, "conf", "configs/local.yml", "config file path")
}
func main() {
flag.Parse()
// load config
config, err := config.Load(configPath)
if err != nil {
log.Fatalf("load config failed: %v", err)
}
// initialize server
servers, err := InitializeServer(config)
if err != nil || len(servers) == 0 {
panic(err)
}
// 启动
for _, srv := range servers {
s := srv // 避免闭包问题,若需要
go func() {
if err := s.Run(); err != nil {
log.Printf("server stopped: %v", err)
}
}()
}
// 阻塞直到收到退出信号
quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit
// 再依次 Stop / Shutdown
}