2025-03-15 16:07:45 +08:00
|
|
|
package web
|
|
|
|
|
|
|
|
|
|
import (
|
2025-03-31 09:09:05 +08:00
|
|
|
"net/http"
|
2025-03-26 14:57:44 +08:00
|
|
|
"platform/pkg/env"
|
2025-03-18 17:57:07 +08:00
|
|
|
|
2025-03-31 09:09:05 +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"
|
2025-03-15 16:07:45 +08:00
|
|
|
)
|
2025-03-31 09:09:05 +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 {
|
2025-03-31 09:09:05 +08:00
|
|
|
|
2025-03-18 17:57:07 +08:00
|
|
|
s.fiber = fiber.New(fiber.Config{
|
|
|
|
|
ErrorHandler: ErrorHandler,
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
s.fiber.Use(requestid.New())
|
|
|
|
|
s.fiber.Use(logger.New())
|
|
|
|
|
|
|
|
|
|
ApplyRouters(s.fiber)
|
2025-03-15 16:07:45 +08:00
|
|
|
|
2025-03-31 09:09:05 +08:00
|
|
|
go func() {
|
|
|
|
|
err := http.ListenAndServe(":6060", nil)
|
|
|
|
|
if err != nil {
|
|
|
|
|
slog.Error("pprof 服务错误", slog.Any("err", err))
|
|
|
|
|
}
|
|
|
|
|
}()
|
|
|
|
|
|
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
|
|
|
}
|
|
|
|
|
}
|