HTTP Requests vs WebSockets vs Server-Sent Events
Tags: backend, architecture, systemdesign, community
Published: 2023-09-24 17:45:20

We all crave apps that run Blazingly FAST even faster than a caffeinated cheetah. No one wants their Valorant frames doing the limbo, or waiting for messages as if they're delivered by snail mail. And who wants stale Figma designs? Not us!

So, today, we're spilling the beans on how to keep your digital world running like a Formula 1 racecar! 🏁

## How REST APIs work

Before we delve into the heart of the competition, let's understand how traditional REST APIs work. REST (Representational State Transfer) APIs rely on HTTP requests (GET, POST, PUT, DELETE) to exchange data between clients and servers. These requests are stateless, meaning that each request must contain all the information needed. While robust, REST has its limitations when it comes to real-time updates.

## Techniques for Receiving Real-Time Data

There are a lot of communication protocols to send/receive data in realtime but we are gonna discuss relatively simpler ones today:

1. Short Polling

2. Long Polling

3. WebSockets

4. Server-Sent Events (SSE)

### 1. Short Polling

![Short Polling Diagram](https://cdn.hashnode.com/res/hashnode/image/upload/v1695486034566/f8ad427e-3567-45e9-a13e-774c4cb6c005.png)

Short polling involves clients sending periodic HTTP requests to the server at fixed intervals, asking if there's new data. It's like a child repeatedly asking, "Are we there yet?" during a long car ride.

#### Pros

- Simple & quick to implement

- Best for Prototyping and building Proof of concepts

#### Cons

- Generates frequent network traffic

- Inefficient

- Delays in data retrieval can make real-time feel more like "near-time."

#### Applications

Short polling is ideal for applications where slight delays are acceptable, such as news feeds.

### 2. Long Polling

![Long polling diagram](https://cdn.hashnode.com/res/hashnode/image/upload/v1695486132815/274b84ed-2a93-46d7-a30b-2281e4ee0195.png)

Long polling is a more intelligent approach. The client sends an HTTP request, but the server doesn't respond immediately. Instead, it holds the request open until new data is available or a connection timeout occurs.

In the above example, say the connection timeout is 30 seconds, if the server doesn't have data to send within this time, the connection will close. The client will have to send another request.

#### Pros

- Reduces the frequency of HTTP requests as compared to short polling.

- Offers near-real-time updates without overwhelming the server.

#### Cons

- Not as efficient as Websockets or SSE.

- May result in frequent connection timeouts if not managed correctly.

#### Applications

Long polling is great for applications that require low-latency updates, like chat apps and real-time notifications.

### 3. WebSockets

![Websockets Diagram](https://cdn.hashnode.com/res/hashnode/image/upload/v1695487027942/bff994aa-d1d4-4e54-8a3f-ca856bf4a3fe.png)

WebSockets establish a persistent, full-duplex connection between the client and server, enabling bidirectional communication. It's like having a phone line where both parties can talk freely without repeatedly dialing.  
If the connection breaks, the client has to implement a mechanism for reconnecting with the server.

#### Pros

- Low latency and true real-time capabilities.

- Ideal for interactive applications, multiplayer games, and collaborative tools.

#### Cons

- Requires more complex server-side implementation.

- Firewalls or proxies can hinder WebSocket connections.

#### Applications

WebSockets excel in applications requiring real-time interaction, such as online gaming, online collaboration tools and chat applications.

### 4. Server-Sent Events (SSE)

![SSE Diagram](https://cdn.hashnode.com/res/hashnode/image/upload/v1695487342083/e0a672c1-6d42-4111-9399-71572d6c82ac.png)

SSE is a unidirectional communication method where the server sends updates to the client over a single HTTP connection. If the connection breaks, the client has to implement a mechanism for reconnecting with the server.

#### Pros

- Lightweight and easy to implement.

- Well-suited for applications where the server primarily pushes data to clients, like stock tickers and live scoreboards.

#### Cons

- Limited to one-way communication from server to client.

- Lacks the full-duplex capabilities of Websockets.

#### Applications

SSE is ideal for scenarios where you only need server-to-client data updates, such as stock market tickers and live blog feeds.

## The Verdict

In this epic battle of real-time communication technologies, the right choice depends on your project's unique needs. Short polling, long polling, Websockets, and SSE each have their strengths and weaknesses, so choose wisely. Whether you want to stay updated on stock prices or host a real-time gaming event, there's a real-time communication solution ready for your needs. Make the right choice, and let your project's real-time journey begin!

Stay tuned for more in-depth and hands-on articles related to each one of these.