Join our community: https://t.me/+DOylgFv1jyJlNzM0
Description
The SSE endpoint has no connection limits per IP. A single client could open thousands of connections, exhausting server file descriptors.
What Needs to Happen
- Track active connections per source IP in-memory
- Max 5 concurrent connections per IP — return 429 with
Retry-After: 60
- Global max 10,000 connections via
MAX_SSE_CONNECTIONS env var — return 503 at capacity
- Clean up IP entry when all connections from that IP close
- Expose per-IP peak in admin metrics
Files
backend/src/services/sse.service.ts
backend/src/routes/v1/events.routes.ts
Acceptance Criteria
Description
The SSE endpoint has no connection limits per IP. A single client could open thousands of connections, exhausting server file descriptors.
What Needs to Happen
Retry-After: 60MAX_SSE_CONNECTIONSenv var — return 503 at capacityFiles
backend/src/services/sse.service.tsbackend/src/routes/v1/events.routes.tsAcceptance Criteria