fried.software
← back to index

Fried Stream

prototype

WebRTC system

Overview

Fried Stream is a minimal WebRTC streaming setup with a WebSocket signaling server, room creation, and a host-controlled viewer approval flow. No third-party streaming infrastructure.

Why I built it

I wanted to understand WebRTC signaling from scratch rather than using a managed service. This was a learning project that became a real working prototype.

Technical highlights

  • Custom WebSocket signaling server in Node.js handling offer/answer/ICE exchange
  • Room-based session management with host approval queue
  • Adaptive bitrate handling via RTCPeerConnection stats API
  • STUN-only setup for direct peer connections on local networks

Hardest engineering problem

ICE candidate negotiation across different NAT configurations is nondeterministic. Getting reliable connections required careful candidate gathering and trickle ICE timing.

What I learned

WebRTC is well-specified but the browser implementations have edge cases. Testing requires real network conditions, not just localhost.

Stack

JavaScriptWebRTCWebSockets