re-write with std usage of net/http
This commit is contained in:
parent
c107d94b11
commit
81bc046237
10 changed files with 419 additions and 97 deletions
52
main.go
52
main.go
|
@ -1,8 +1,54 @@
|
|||
package main
|
||||
|
||||
import "git.okseby.com/okseby/playground-go/server"
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"git.okseby.com/okseby/playground-go/handlers"
|
||||
"git.okseby.com/okseby/playground-go/internal/config"
|
||||
"git.okseby.com/okseby/playground-go/logger"
|
||||
"git.okseby.com/okseby/playground-go/middleware"
|
||||
)
|
||||
|
||||
func main() {
|
||||
server := server.NewServer("0.0.0.0:7878")
|
||||
server.ListenAndServe()
|
||||
// Load config
|
||||
config.Load()
|
||||
|
||||
// Register routes
|
||||
mux := handlers.RegisterRoutes()
|
||||
handler := middleware.Logger(mux)
|
||||
|
||||
server := &http.Server{
|
||||
Addr: ":" + config.AppConfig.Port,
|
||||
Handler: handler,
|
||||
}
|
||||
|
||||
// Channel to listen for shutdown signals
|
||||
quit := make(chan os.Signal, 1)
|
||||
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
|
||||
|
||||
// Run the server in a goroutine
|
||||
go func() {
|
||||
logger.Info("Starting server on port %s...", config.AppConfig.Port)
|
||||
if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed {
|
||||
logger.Fatal("Error starting server: %v", err)
|
||||
}
|
||||
}()
|
||||
|
||||
// Wait for shutdown signal
|
||||
<-quit
|
||||
logger.Info("Shutting down...")
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
||||
defer cancel()
|
||||
|
||||
if err := server.Shutdown(ctx); err != nil {
|
||||
logger.Fatal("Server forced to shutdown: %v", err)
|
||||
}
|
||||
|
||||
logger.Info("Server exited cleanly.")
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue