advanced

WebRTC API basics

Знайте место WebRTC: peer media/data channels, signaling APIs, NAT traversal, STUN/TURN и operational complexity.

WebRTC обеспечивает peer-to-peer **media** (audio/video) и **data channels** в браузерах с низкой latency. Это не замена generic REST — он решает realtime P2P после signaling, устанавливающего параметры сессии.

Основные части:

  • **getUserMedia** — захват camera/mic (permissions, выбор устройства).
  • **RTCPeerConnection** — ICE candidates, codecs, шифрование (DTLS-SRTP).
  • **RTCDataChannel** — произвольные binary/text между peers.
  • **Signaling** — out-of-band API (часто WebSocket/HTTP) обменивается SDP offers/answers и ICE candidates; WebRTC не стандартизирует signaling.

NAT traversal:

  • **STUN** определяет публичный адрес.
  • **TURN** ретранслирует при неудачном direct P2P (дорого в ops).
					const pc = new RTCPeerConnection({ iceServers: [{ urls: 'stun:stun.l.google.com:19302' }] });
const channel = pc.createDataChannel('chat');
pc.onicecandidate = (e) => signaling.send({ candidate: e.candidate });
				

На интервью: где уместен WebRTC (звонки, screen share, low-latency data), зачем signaling server, стоимость TURN.

Типовые ошибки: нет TURN fallback (ломается на strict NAT), signaling без auth, WebRTC вместо server media mixing для больших конференций.

Компромисс: эффективность P2P против operational complexity — большинству продуктов нужен managed TURN и мониторинг.

Чеклист:

  • Аутентифицированный signaling channel.
  • STUN + TURN для надёжности в production.
  • Connection state и renegotiation.
  • Media path отдельно от application REST API.