Files
proxy/server/web/web.go

41 lines
707 B
Go
Raw Normal View History

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