Real-Time APIs · Real-Time in Practice

Real-Time on Mobile

Sockets in the foreground, push in the background, battery awareness.

Create a free account to save this page, take notes and track your progress. Sign in

Mobile OSes suspend background apps, so persistent sockets only work in the foreground. Combine: WebSocket/SSE while the app is open; push notifications (APNs/FCM) for important events when backgrounded — sometimes silent/data pushes to trigger a sync; and sync on resume using cursors. Minimize battery and data use: avoid frequent polling, batch updates, and reconnect with backoff when networks change.

Mobile real-time strategy

App state Mechanism Notes
Foreground WebSocket / SSE Live updates; reconnect on network change
Background Push (APNs/FCM) User-visible or silent data messages (rate-limited by OS)
Resume Delta sync with cursor Fetch everything missed
Killed / offline Push + sync on next launch Durable server-side state
On app foreground:  GET /sync?cursor=abc123 → apply changes → open WebSocket (resume from latest seq)
On background:      close socket after short grace period; rely on push
Push payload:       {"type": "message.new", "conversation_id": "c_9", "seq": 1834}  → app syncs on open

Common pitfalls

  • Keeping sockets open in the background (killed by OS, battery drain).
  • Putting sensitive content in push payloads.
  • Silent pushes as a reliable delivery mechanism (OS throttles them).

Key points

  • Sockets in foreground, push in background
  • Sync on resume with cursors
  • Battery- and data-aware

Further reading: Firebase Cloud Messaging: Message types

Practice questions

Why can't mobile apps rely on WebSockets for background notifications?

Answer

The OS suspends background apps and their network connections to save battery; only platform push services can wake or notify them.

Why shouldn't silent push notifications be treated as guaranteed delivery?

Answer

iOS and Android throttle or drop background/data pushes (low power mode, app usage patterns), so apps must still sync on launch.

Open in the app to mark lessons complete, take notes and track your progress.

Was this page helpful?