HTTP can't push — the server only answers when asked. Here's the ladder of techniques that fake or fix that, each one solving the last one's flaw, and the fan-out problem that breaks all of them at scale.
WhatsApp-scale messaging, built end to end: persistent WebSocket gateways, a user→server registry, store-and-forward for offline devices, the one-tick / two-tick / blue-tick delivery state machine, message ordering, and group fan-out. Drive the delivery protocol yourself, then take it apart.