Skip to content

v0.1.15

Choose a tag to compare

@Daniel-Robbins Daniel-Robbins released this 20 Feb 04:41
· 45 commits to main since this release

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-After on storage limit exceeded (instead of 500)
  • Conditional storage writes — skip unchanged userId / defaultModel / cachedModels

Plugin (ws-client.ts)

  • Detect HTTP 429 via unexpected-response event, respect Retry-After
  • Recognize close code 4009 — stop reconnecting when replaced by server
  • Delayed backoff reset (10s stability required) — prevents 1s retry loops on flash-connects