64 lines
1.1 KiB
Go
64 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"os/signal"
|
|
"syscall"
|
|
"time"
|
|
|
|
fiberzap "github.com/gofiber/contrib/fiberzap/v2"
|
|
"github.com/gofiber/fiber/v2"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
var port = 3000
|
|
|
|
func main() {
|
|
shutdownCtx, stop := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
|
|
defer stop()
|
|
|
|
logger := zap.Must(zap.NewDevelopment())
|
|
defer logger.Sync()
|
|
sugared := logger.Sugar()
|
|
|
|
config := fiber.Config{
|
|
DisableStartupMessage: true,
|
|
|
|
IdleTimeout: 10 * time.Second,
|
|
ReadTimeout: 10 * time.Second,
|
|
WriteTimeout: 10 * time.Second,
|
|
}
|
|
|
|
app := fiber.New(config)
|
|
|
|
app.Get("/", func(c *fiber.Ctx) error {
|
|
return c.SendString("Hello, World!")
|
|
})
|
|
|
|
app.Use(fiberzap.New(fiberzap.Config{
|
|
Logger: logger,
|
|
}))
|
|
|
|
go func() {
|
|
err := app.Listen(fmt.Sprintf(":%d", port))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}()
|
|
|
|
sugared.Infow("Yggdrasil is now running", "port", port)
|
|
|
|
<-shutdownCtx.Done()
|
|
stop()
|
|
|
|
sugared.Infoln("Shutting down gracefully...")
|
|
err := app.ShutdownWithTimeout(10 * time.Second)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
// Cleanup code here
|
|
|
|
sugared.Infoln("Yggdrasil shut down gracefully.")
|
|
}
|