From a98e6b9f844b980d27097be68886ec9faa6d90e8 Mon Sep 17 00:00:00 2001 From: bndw Date: Sat, 14 Feb 2026 22:04:19 -0800 Subject: fix: track WebSocket connections in metrics Connection metrics were defined but never called. Add IncrementConnections and DecrementConnections to MetricsRecorder interface and call them when WebSocket connections are established/closed. - Add connection methods to MetricsRecorder interface - Increment on successful WebSocket upgrade - Decrement in defer when connection closes - Dashboard will now show active connection count --- internal/handler/websocket/handler.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'internal/handler') diff --git a/internal/handler/websocket/handler.go b/internal/handler/websocket/handler.go index a7b73ec..cb089b1 100644 --- a/internal/handler/websocket/handler.go +++ b/internal/handler/websocket/handler.go @@ -26,6 +26,8 @@ type AuthStore interface { } type MetricsRecorder interface { + IncrementConnections() + DecrementConnections() IncrementSubscriptions() DecrementSubscriptions() SetActiveSubscriptions(count int) @@ -114,6 +116,11 @@ func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { } defer conn.Close(websocket.StatusNormalClosure, "") + // Track connection metrics + if h.metrics != nil { + h.metrics.IncrementConnections() + } + ctx := r.Context() clientSubs := make(map[string]*subscription.Subscription) state := &connState{ @@ -121,6 +128,12 @@ func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { } defer func() { + // Decrement connection count + if h.metrics != nil { + h.metrics.DecrementConnections() + } + + // Clean up subscriptions count := len(clientSubs) for subID := range clientSubs { h.subs.Remove(subID) -- cgit v1.2.3