package web import ( "context" "log/slog" "net/http" "proxy-server/server/pkg/env" "strconv" "github.com/gin-gonic/gin" "github.com/pkg/errors" ) var server *http.Server func Start(ctx context.Context) error { address := ":" + strconv.Itoa(int(env.AppWebPort)) engine := gin.Default() server = &http.Server{Addr: address, Handler: engine} // 配置中间件和路由 Router(engine) // 监听关闭信号 go func() { <-ctx.Done() err := server.Shutdown(context.Background()) if err != nil { slog.Error("web 服务关闭失败", err) } }() // 启动服务 err := server.ListenAndServe() if err != nil { return errors.Wrap(err, "web 服务启动失败") } return nil }