summaryrefslogtreecommitdiffstats
path: root/internal/subscription
diff options
context:
space:
mode:
authorbndw <ben@bdw.to>2026-02-14 12:49:08 -0800
committerbndw <ben@bdw.to>2026-02-14 12:49:08 -0800
commit40df56985402a31695a9a3bb13319bd2a3276305 (patch)
treef95842afe4e75b93dfea49b94e5a6815c0d936ce /internal/subscription
parent9711b2b177959c0ea8e5119bead16dfd40b12c47 (diff)
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).
Diffstat (limited to 'internal/subscription')
-rw-r--r--internal/subscription/manager.go6
1 files changed, 6 insertions, 0 deletions
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) {
72 return sub, ok 72 return sub, ok
73} 73}
74 74
75func (m *Manager) Count() int {
76 m.mu.RLock()
77 defer m.mu.RUnlock()
78 return len(m.subscriptions)
79}
80
75func (m *Manager) MatchAndFan(event *pb.Event) { 81func (m *Manager) MatchAndFan(event *pb.Event) {
76 m.mu.RLock() 82 m.mu.RLock()
77 defer m.mu.RUnlock() 83 defer m.mu.RUnlock()