diff options
| author | bndw <ben@bdw.to> | 2026-02-14 12:49:08 -0800 |
|---|---|---|
| committer | bndw <ben@bdw.to> | 2026-02-14 12:49:08 -0800 |
| commit | 40df56985402a31695a9a3bb13319bd2a3276305 (patch) | |
| tree | f95842afe4e75b93dfea49b94e5a6815c0d936ce /internal/subscription/manager.go | |
| parent | 9711b2b177959c0ea8e5119bead16dfd40b12c47 (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/manager.go')
| -rw-r--r-- | internal/subscription/manager.go | 6 |
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 | ||
| 75 | func (m *Manager) Count() int { | ||
| 76 | m.mu.RLock() | ||
| 77 | defer m.mu.RUnlock() | ||
| 78 | return len(m.subscriptions) | ||
| 79 | } | ||
| 80 | |||
| 75 | func (m *Manager) MatchAndFan(event *pb.Event) { | 81 | func (m *Manager) MatchAndFan(event *pb.Event) { |
| 76 | m.mu.RLock() | 82 | m.mu.RLock() |
| 77 | defer m.mu.RUnlock() | 83 | defer m.mu.RUnlock() |
