Real-time communication is now a cornerstone of modern software. Whether you're showing live scores, streaming AI responses, pushing a payment confirmation to a phone, or propagating an event between two microservices β the underlying question is the same: how does the server reach the client before the client asks? The answer looks very different depending on who the client is. A backend server, an Android device, and an iPhone each live in fundamentally different environments, face different constraints, and have completely different ecosystems waiting to solve this problem. This article walks through each scenario in depth β the concepts, the practical tooling, and real code. Part 1: The Mental Model β Push vs. Poll Before jumping into techniques, it's worth understanding why this is even hard. HTTP was originally designed around a simple request-response cycle: the client asks, the server answers, connection closes.β¦