Files
platform/web/web.go

91 lines
1.5 KiB
Go
Raw Normal View History

2025-03-15 16:07:45 +08:00
package web
import (
"net/http"
"platform/pkg/env"
g "platform/web/globals"
2025-04-01 10:51:32 +08:00
"runtime"
2025-03-18 17:57:07 +08:00
"log/slog"
2025-03-15 16:07:45 +08:00
"github.com/gofiber/fiber/v2"
2025-03-18 17:57:07 +08:00
"github.com/gofiber/fiber/v2/middleware/logger"
"github.com/gofiber/fiber/v2/middleware/requestid"
"github.com/google/uuid"
"github.com/jxskiss/base62"
2025-03-15 16:07:45 +08:00
)
import _ "net/http/pprof"
2025-03-15 16:07:45 +08:00
type Config struct {
Listen string
}
type Server struct {
config *Config
fiber *fiber.App
}
func New(config *Config) (*Server, error) {
_config := config
if config == nil {
_config = &Config{}
}
return &Server{
config: _config,
}, nil
}
func (s *Server) Run() error {
// inits
g.InitBaiyin()
g.InitAlipay()
// g.InitWechatPay()
// config
2025-03-18 17:57:07 +08:00
s.fiber = fiber.New(fiber.Config{
ErrorHandler: ErrorHandler,
})
2025-04-01 10:51:32 +08:00
s.fiber.Use(logger.New(logger.Config{
DisableColors: false,
}))
s.fiber.Use(requestid.New(requestid.Config{
Generator: func() string {
binary, _ := uuid.New().MarshalBinary()
return base62.EncodeToString(binary)
},
}))
2025-03-18 17:57:07 +08:00
ApplyRouters(s.fiber)
2025-03-15 16:07:45 +08:00
2025-04-01 10:51:32 +08:00
// pprof
go func() {
2025-04-01 10:51:32 +08:00
runtime.SetBlockProfileRate(1)
err := http.ListenAndServe(":6060", nil)
if err != nil {
slog.Error("pprof 服务错误", slog.Any("err", err))
}
}()
// listen
2025-03-18 17:57:07 +08:00
port := env.AppPort
slog.Info("Server started on :" + port)
err := s.fiber.Listen(":" + port)
2025-03-15 16:07:45 +08:00
if err != nil {
2025-03-18 17:57:07 +08:00
slog.Error("Failed to start server", slog.Any("err", err))
2025-03-15 16:07:45 +08:00
}
2025-03-18 17:57:07 +08:00
slog.Info("Server stopped")
2025-03-15 16:07:45 +08:00
return nil
}
func (s *Server) Stop() {
err := s.fiber.Shutdown()
if err != nil {
2025-03-18 17:57:07 +08:00
slog.Error("Failed to shutdown server", slog.Any("err", err))
2025-03-15 16:07:45 +08:00
}
}