Add basic webserver skeleton with healthcheck

This commit is contained in:
2026-01-08 02:20:23 -08:00
parent 38faf56be0
commit 516853626d
14 changed files with 1129 additions and 0 deletions

33
internal/server/http.go Normal file
View File

@@ -0,0 +1,33 @@
package server
import (
"fmt"
"net/http"
"time"
)
func (s *Server) serveUntilShutdown() {
listenAddr := fmt.Sprintf(":%d", s.config.Port)
s.httpServer = &http.Server{
Addr: listenAddr,
ReadTimeout: 30 * time.Second,
WriteTimeout: 60 * time.Second,
MaxHeaderBytes: 1 << 13, // 8KB
Handler: s,
}
s.SetupRoutes()
s.log.Info("http begin listen", "listenaddr", listenAddr)
if err := s.httpServer.ListenAndServe(); err != nil && err != http.ErrServerClosed {
s.log.Error("listen error", "error", err)
if s.cancelFunc != nil {
s.cancelFunc()
}
}
}
// ServeHTTP implements http.Handler.
func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
s.router.ServeHTTP(w, r)
}