package web import ( "context" "log/slog" "net/http" "os" "proxy-server/server/web/auth" "proxy-server/server/web/router" "github.com/gin-gonic/gin" ) var server *http.Server func Start(ctx context.Context, errCh chan error) { address := ":" + os.Getenv("PORT") engine := gin.Default() server = &http.Server{Addr: address, Handler: engine} // 监听关闭信号 go func() { <-ctx.Done() slog.Info("web 服务被动关闭") err := server.Shutdown(ctx) if err != nil { slog.Error("web 服务关闭失败", err) return } }() // 配置中间件和路由 auth.Apply(engine, nil) router.Apply(engine) // 启动服务 err := server.ListenAndServe() if err != nil { errCh <- err return } slog.Debug("web 服务主动结束") errCh <- nil }