Как работает WebRTC: signaling, STUN, TURN и peer-to-peer соединение
WebRTC передаёт аудио, видео и данные между браузерами, но само по себе не организует знакомство участников. Приложению нужны signaling, работа с сетевыми ограничениями и понятное восстановление после ошибок.
От камеры до соединения
getUserMedia запрашивает разрешение и возвращает MediaStream. Потоки добавляются в RTCPeerConnection. Один участник создаёт offer, второй — answer; описания передаются через signaling-сервер. Канал signaling можно реализовать на WebSocket, но он не переносит само видео.
Зачем нужны STUN и TURN
ICE собирает возможные сетевые маршруты. STUN помогает узнать внешний адрес, а TURN ретранслирует трафик, когда прямое соединение невозможно. Без TURN приложение будет работать в простой домашней сети и неожиданно ломаться в корпоративных или мобильных сетях.
Диагностика качества
Проверяйте разрешение, выбранные устройства, состояние ICE и статистику RTCPeerConnection. Наблюдайте bitrate, packet loss, jitter и round-trip time. Интерфейс должен объяснять потерю разрешения, отключение устройства и восстановление соединения, а не оставлять пользователя перед замершим видео.
Короткий чек-лист
- Signaling отделён от медиатрафика
- Настроены STUN и TURN
- Ошибки разрешений объяснены
- Собирается статистика соединения
- Проверены разные сети и устройства