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.