Consumer Messaging Platform — WhatsApp-Class System  ·  View 11 of 23

Presence, Typing and Push Signals

Three ephemeral signal classes and the privacy gate that decides whether any of them are visible at all.

Editable source SVG draw.io All views
Emit
Emit
Route
Route
State held
State held
Fan out
Fan out
Client effect
Client effect
Presence
Presence
Socket connect and disconnect
Socket connect and disconnect
Gateway heartbeat
Every 30 s
Gateway heartbeat...
Presence Cache
Redis, TTL 60 s
Presence Cache...
Subscribed open chats only
Subscribed open chats only
Online or last seen
Online or last seen
Typing indicator
Typing indicator
Keystroke, debounced 2 s
Keystroke, debounced 2 s
Gateway, never persisted
Gateway, never persisted
In-memory, TTL 10 s
In-memory, TTL 10 s
Open chat participants
Open chat participants
Typing banner
Typing banner
Privacy gate
Privacy gate
User privacy setting
User privacy setting
Evaluated at fan-out time
Evaluated at fan-out time
Account & Group DB
Account & Group DB
Reciprocity rule
Hide yours, lose theirs
Reciprocity rule...
Signal suppressed
Signal suppressed
Push notification
Push notification
Undelivered message or call
Undelivered message or call
Push Dispatcher
Push Dispatcher
Device token registry
Device token registry
APNs, FCM, Web Push
APNs, FCM, Web Push
Silent wake, then fetch and decrypt
Silent wake, then fetch and decrypt
Presence, Typing and Push Signals
Presence, Typing and Push Signals
Push payloads carry no message content; the woken client fetches and decrypts locally.
Push payloads carry no message content; the woken client fetches and decrypts locally.
v 1.0 · owner Platform Architecture · date 2026-08
v 1.0 · owner Platform Architecture · date 2026-08
Text is not SVG - cannot display

Nothing is durable

  • Presence lives in a cache with a 60-second TTL, typing with a 10-second TTL
  • Neither is ever written to a durable store or logged
  • Losing the cache degrades a cosmetic feature, nothing else

Fan-out discipline

  • Presence is pushed only to peers with the chat currently open, not to all contacts
  • Typing is debounced at 2 seconds on device before it is even sent
  • This keeps a signal that could dominate traffic down to a small fraction of it

Push is a doorbell

  • Payloads carry no content, only a wake instruction and a message count
  • The woken client fetches from its own inbox and decrypts locally
  • Push token registration is per device and revoked when a device is unlinked