From 40df56985402a31695a9a3bb13319bd2a3276305 Mon Sep 17 00:00:00 2001 From: bndw Date: Sat, 14 Feb 2026 12:49:08 -0800 Subject: feat: track WebSocket subscriptions in metrics Add metrics tracking for WebSocket (NIP-01) subscriptions in addition to existing gRPC subscription tracking. Changes: - Add Count() method to subscription.Manager - Add MetricsRecorder interface to WebSocket handler - Update subscription metrics when REQ/CLOSE messages processed - Wire up metrics to WebSocket handler in main.go Before: Only gRPC stream subscriptions were counted After: Both gRPC and WebSocket subscriptions tracked accurately This fixes the dashboard showing 0 subscriptions when clients connect via WebSocket (e.g., nak req --stream). --- internal/subscription/manager.go | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'internal/subscription') diff --git a/internal/subscription/manager.go b/internal/subscription/manager.go index 6347018..3f6ac7f 100644 --- a/internal/subscription/manager.go +++ b/internal/subscription/manager.go @@ -72,6 +72,12 @@ func (m *Manager) Get(id string) (*Subscription, bool) { return sub, ok } +func (m *Manager) Count() int { + m.mu.RLock() + defer m.mu.RUnlock() + return len(m.subscriptions) +} + func (m *Manager) MatchAndFan(event *pb.Event) { m.mu.RLock() defer m.mu.RUnlock() -- cgit v1.2.3