Skip to main content

Command Palette

Search for a command to run...

The Web Was Never Meant for Conversations — So We Taught It to Talk

Updated
4 min read
The Web Was Never Meant for Conversations — So We Taught It to Talk
D

Frontend Developer

Imagine opening WhatsApp…
You send a message…
And nothing happens until you refresh the page manually. Annoying, right?

Well, believe it or not — that’s exactly how the early web worked.

It wasn’t built for conversations.
It wasn’t built for chats.
It wasn’t built for notifications, live updates, multiplayer anything, or real-time dashboards.

It was a library.
You visited a website, the server gave you a page, and the conversation ended right there.

That’s it.
The server didn’t care about you anymore.
And your browser didn’t care about the server.

This is where our story begins.

🌐 The Web’s Silent Part

When the web was first created, it had one job:

Serve documents.

Browsers would ask:

“Hey server, give me that page.”

Server would reply:

“Here you go.”

And then they both moved on with their lives.

There was no live data.
No “server pushing updates.”
No “client notifying server about something without reloading.”
It was just one-way talk which follows Half Duplex Mode of Communication.

Just quiet, simple, one-time exchanges.

💬 The Need for Conversations

But then the web evolved. People didn’t want just pages. They wanted experiences. They wanted live interactions,

The world demanded:

  • Live chat

  • Stock price updates

  • Multiplayer games

  • Delivery tracking

  • Live dashboards

  • Messages that appear instantly

  • Feeds that update without refresh

These aren’t pages.
These are conversations.

Your app needs to “listen” as much as it “talks”.

And browsers…
Well… they weren’t designed for that.

The Hacks We Invented to Make the Web “Talk”

Developers, being the incredibly stubborn and creative creatures they are, refused to accept the limitations.
So instead of waiting for the web to evolve, they built clever hacks to bend it into something slightly more conversational.

1. Full Page Refresh

The simplest method: Page Refresh.
If you wanted new data, you had to reload the entire page.
Every image.
Every stylesheet.
Every script.
Just for a few bytes of updated text.

It worked, but the experience was as smooth as driving on a road full of potholes.

2. Auto-Refresh (Meta Refresh Tag)

Websites began refreshing themselves automatically every few seconds.

<meta http-equiv="refresh" content="5">

It made apps feel somewhat dynamic, but at the cost of:

  • flickering content

  • wasted bandwidth

  • constant disruption

Imagine reading an article and the page suddenly reloads mid-sentence.
Not ideal.

3. AJAX Polling

A big upgrade.

The browser could now repeatedly ask:

“Hey server, anything new? How about now? Now? Now? Now??”

Every few seconds, it sent a tiny request to check for updates.

setInterval(() => fetch('/updates'), 2000);

This created the illusion of real-time interaction…but it was still pretend.

Polling was more like checking your phone every 10 seconds to see if someone replied, instead of being notified.

4. Long Polling

A more advanced trick.
The request stays open until the server has something to say.

Better, but still artificial.
You were essentially stretching the original "request-response" system to its breaking point.

These weren’t true solutions.
They were clever workarounds.
Temporary bridges built on top of a system that fundamentally didn’t support ongoing conversations.

The web was being forced to behave like something it wasn’t.

The Turning Point — The Birth of WebSockets

All those techniques—refreshing, polling, long polling—were clever, but they all suffered from the same foundational flaw:

The communication was still initiated by the client.
The server had no way to push data the moment something changed.

This limitation became increasingly painful as applications demanded lower latency and higher interactivity.

So the web community asked a simple but revolutionary question:

What if the client and server could open a connection…
and just keep it open?

A single, persistent channel.
A two-way line of communication where either side could send data whenever needed.

This idea led to one of the biggest evolutions in browser communication:

WebSockets: The First Real Two-Way Web Communication

Introduced as part of the HTML5 specification, WebSockets solved the problem the web had carried since its birth.

With WebSockets:

  • The client connects once

  • The server upgrades that connection from HTTP → WebSocket protocol

  • After that, both sides can send messages independently

  • No repeated handshakes

  • No polling

  • No request/response cycle

This was true full-duplex communication.

In many ways, WebSockets gave the web a new superpower.

What Websockets provided:

With a persistent connection, entirely new classes of applications became practical:

  • Real-time chat systems

  • Collaborative tools (Google Docs-like editing)

  • Multiplayer online games

  • Live dashboards with second-level or sub-second updates

  • Crypto/stock price streaming

  • Sports scoreboards

  • Real-time transport and delivery tracking

  • IoT device monitoring

No more hacks.
No more polling loops.
No more pretending.

The web could finally behave like a truly interactive platform. We’ll know more about Websockets in the next post along with the implementation.