v0.1.15
Reconnection storm prevention
Three-layer defense against WebSocket reconnection storms that can exhaust Durable Objects free-tier write limits:
API Worker
- Cache-based rate limit per user (10s cooldown) — prevents DO wake-ups during storms
ConnectionDO
- Custom close code 4009 for replaced connections (vs generic 1000)
- Socket accumulation safety valve (closes all when >3)
503 + Retry-Afteron storage limit exceeded (instead of 500)- Conditional storage writes — skip unchanged
userId/defaultModel/cachedModels
Plugin (ws-client.ts)
- Detect HTTP 429 via
unexpected-responseevent, respectRetry-After - Recognize close code 4009 — stop reconnecting when replaced by server
- Delayed backoff reset (10s stability required) — prevents 1s retry loops on flash-connects