Skip to main content

Limits

Technical limits for EdgeBase Realtime (WebSocket subscriptions, Presence, and Broadcast).

Connections

LimitDefaultConfigurableNotes
Auth timeout5,000 msYesrealtime.authTimeoutMs — connection closed if no auth message received
Max pending connections per IP5NoUnauthenticated WebSocket DDoS gate
Pending connection TTL10 secondsNoAuto-expires; no cleanup needed
Ping/Pong interval30 secondsNoClient sends ping, server responds pong

Subscriptions & Filters

LimitValueNotes
Server-side filter conditions (AND)5 maxPer subscription
Server-side filter conditions (OR)5 maxPer subscription
Channel access rule evaluationSubscribe-time onlyRe-evaluated on re-auth
Batch changes threshold10 changesConfigurable via realtime.batchThreshold

Presence

LimitDefaultConfigurableNotes
Presence payload size1 KBNoValidated on both server and SDK
Presence TTL60,000 ms (60s)Yesrealtime.presenceTTL — stale entries auto-removed

Hibernation & Recovery

BehaviorDetails
HibernationIdle DOs hibernate automatically — $0 duration cost
Wake-up recoveryPRESENCE_RESYNC + FILTER_RESYNC messages sent to clients
State loss on hibernateSubscription state and presence maps are cleared; SDK re-syncs automatically

Rate Limiting

GroupDefaultKeyConfigurable
global10,000,000 req / 60sIPYes

WebSocket upgrade requests count against the global rate limit. Once connected, messages flow through the Durable Object without per-message rate limiting.

SQLite not used

Realtime DOs do not use SQLite. All state is in-memory and connection-based. When a connection ends, the associated state is removed. This is by design — Realtime is ephemeral.