Skip to content

An interactive field guide — 2026

See the messages underneath the call.

WebSocket, WebRTC, signaling, ICE, SFUs — explained from the wire up, then put in your hands. Step through animated diagrams, run real peer connections, and break them until the failure modes are familiar.

15 lessons4 live labsNo accountProgress in this browser
HTTP pollingseconds
Long pollingheld
SSEone-way
WebSocketduplex
WebRTCmedia
FIG. 01 — PATH OF A PACKET
SESSION: DEMO-7F2ICE: SRFLX → HOSTBROWSERPeer ABROWSERPeer BWS RELAYSignalingRELAY SERVERTURNSDPICESRTP / DTLSnominated candidate pairRTT24 msBITRATE1.8 MbpsCONNECTIONconnected

Media stays between peers.

SIGNALING IS OUT-OF-BAND. MEDIA IS NOT.

TRACE THE FLOW

01 / Why this exists

Most real-time tutorials stop at the API. The failures begin below it.

A call can be “connected” and still be unusable. A socket can be “open” and already dead.

Real-time systems are layered: an HTTP upgrade, an SDP negotiation, an ICE path, a DTLS handshake, then media inside SRTP. Each layer has its own state machine, its own metrics, and its own way of failing quietly.

This field guide makes every layer inspectable. Each lesson pairs a step-through diagram with a real lab, a code walkthrough, and the mistakes that actually take production systems down.

Step through it

Animated protocol paths with play, pause, and single-step controls.

Then do it live

Real sockets, real peer connections, real getStats() output.

Then break it

Block STUN, kill the server, drop candidates, and watch why.

02 / The curriculum

Four modules. One complete connection.

VIEW ALL LESSONS
01

Foundations

3 LESSONS

The transport choices and two connection models behind every real-time product.

02
03

Data, transport & quality

3 LESSONS

Move arbitrary data, understand the encrypted media pipeline, and measure what users feel.

04

Scale & production

4 LESSONS

Choose a topology, harden the system, debug failures, and ship the capstone.

Start at lesson 01START ANYWHERE. THE GUIDE REMEMBERS.

03 / Practice

A lab for every layer. Including the ugly parts.

Open two tabs, or use the solo loopback. Every lab exposes the raw signaling log, ICE candidates, connection states, and live stats — because the numbers are the lesson.

Break-it controls

Block STUNForce TURNDrop candidatesDeny cameraKill socket
1:1 CONNECTION LAB / SCHEMATIC
CONNECTED

Signaling log

10:42:01→joinroom: demo-7f2
10:42:01←joinedpeer id: p_8f21
10:42:02→offersdp, 1 m-line
10:42:02←answersdp, 1 m-line
10:42:02→icehost 192.168…
10:42:03←icesrflx 49.36…
10:42:03→icerelay 3.108…
10:42:04·stateconnected

Candidates

host192.168.1.24
srflx49.36.82.17
relay3.108.44.9

Live stats

RTT

24 ms

LOSS

0.1%

VIDEO

1.8 Mbps

FPS

30

SELECTED PAIR: SRFLX

Direct UDP. No media relayed.

REAL LAB

ILLUSTRATIVE DATA — THE LAB SHOWS YOURS.

04 / Topology

Topology is a budget decision wearing an architecture hat.

Every extra participant changes how many uploads you need, how much CPU the browser burns, and what the server is allowed to see. The topology module does the math, then lets you feel it in a multi-tab mesh lab.

At a glance / four participants

1.5 Mbps UPLOAD EACH
TopologyUploads per peerServer CPUComfortable room
Mesh3 streamsNone2–4
SFU1 streamLow10–100+
MCU1 streamVery high5–25
MEDIA DATA / CONTROLSOURCE: BANDWIDTH MODEL, 720P

05 / The standard

No black boxes, no magic handshakes, no “just use an SDK.”

Measure the real thing

Every performance claim maps to getStats(), a timer, or a byte count you can reproduce.

Read both sides

A protocol is an agreement. Lessons show the browser and the server, not just the JavaScript you typed.

Failure is a feature

Break-it modes and Do/Don't panels make the expensive mistakes cheap to learn.

Begin

Start with the wire.
Ship the call.

Fifteen lessons from polling to production. Open the first diagram, guess the next message, then run the lab and find out.

Start at lesson 01Browse the curriculum

NO SIGN-UP. ANONYMOUS DEVICE PROGRESS.