Building Voicer — a low-latency WebRTC voice room

Building Voicer — a low-latency WebRTC voice room

July 18, 2026·8 min read·
#WebRTC#Node.js#System Design

How I designed signaling, NAT traversal and role-based rooms inspired by Clubhouse.

The problem

Real-time voice at scale is hard. Signaling, NAT, congestion — everything must dance in sub-200ms.

Architecture

Signaling on Socket.io, media on WebRTC PCs, TURN servers for the 20% of users behind symmetric NAT.

// simple offer/answer flow
const pc = new RTCPeerConnection(config);
pc.onicecandidate = (e) => socket.emit('ice', e.candidate);

Learnings

  • Keep signaling stateless where possible
  • Roll room state through Redis
  • Measure jitter, not just latency
Written by Manish Patidar

Comments

Loading…
“Man is made by his belief. As he believes, so he is.”_
— Bhagavad Gita