CUB-136: add SSE endpoint in Go backend
All checks were successful
Dev Build / build-test (pull_request) Successful in 2m9s

This commit is contained in:
2026-05-07 08:29:34 -04:00
parent 62d74beba4
commit 41f66005a6
5 changed files with 307 additions and 7 deletions

View File

@@ -12,6 +12,7 @@ import (
"github.com/CubeCraft-Creations/Extrudex/backend/internal/config"
"github.com/CubeCraft-Creations/Extrudex/backend/internal/db"
"github.com/CubeCraft-Creations/Extrudex/backend/internal/router"
"github.com/CubeCraft-Creations/Extrudex/backend/internal/sse"
)
func main() {
@@ -39,15 +40,24 @@ func main() {
slog.Info("database connected")
// Create SSE broadcaster and start it
sseBC := sse.NewBroadcaster(128)
sseBC.Start()
defer sseBC.Stop()
slog.Info("sse broadcaster started")
// Create router
r := router.New(cfg, dbPool)
r := router.New(cfg, dbPool, sseBC)
// Create HTTP server
// WriteTimeout is 0 for SSE support — the Chi middleware.Timeout(60s)
// handles request-level timeouts on non-SSE routes.
server := &http.Server{
Addr: ":" + cfg.Port,
Handler: r,
ReadTimeout: 15 * time.Second,
WriteTimeout: 15 * time.Second,
WriteTimeout: 0, // disabled for SSE long-lived connections
IdleTimeout: 60 * time.Second,
}