Recipe
WebRTC Patterns
Production-grade signaling, NAT traversal, and media topology recipes for real-time peer connections.
Signaling State Machine
Model offer/answer exchange as a deterministic FSM with explicit transitions: idle → local-offer → remote-answer → connected. Reject out-of-order SDP to prevent glare.
states: idle | local-offer | remote-offer | connected on local-offer + remote-answer → connected on remote-offer + local-answer → connected default → rollback + renegotiate
TURN-over-TCP Fallback
When UDP is blocked, cascade ICE candidates: host → srflx → relay TCP. Provision TURN on :443 with TLS to evade deep-packet inspection.
iceServers: [{
urls: "turns:turn.example.com:443",
username: "meridian",
credential: process.env.TURN_SECRET
}]Mesh vs SFU Topology
For N ≤ 4 peers, full mesh with simulcast keeps latency minimal. Beyond 4, route through a Selective Forwarding Unit to cap upstream bandwidth at one encode per sender.
Data Channel Multiplexing
Open a single ordered DataChannel and frame messages with a 2-byte type prefix. Avoid per-channel setup latency when sending chat, cursor sync, and presence updates concurrently.