WebRTC
Оригинальное название: Web Real-Time Communication (WebRTC)
Коротко
Набор браузерных API и сетевых протоколов, с которыми две страницы обмениваются видео, звуком и данными напрямую, без плагинов и с минимальной задержкой.
Что такое «WebRTC»
До появления WebRTC видеосвязь в браузере требовала Flash или отдельной программы. Теперь звонок, демонстрация экрана или передача файла работают на обычной веб-странице. Технология описана стандартами W3C и IETF и поддерживается всеми современными браузерами. Шифрование трафика в WebRTC обязательно, а доступ к камере и микрофону страница получает только по HTTPS и с разрешения пользователя.
Из чего состоит WebRTC
getUserMedia— получение потока с камеры и микрофона,getDisplayMedia— захват экрана.RTCPeerConnection— соединение между двумя участниками: согласование кодеков, передача медиа, контроль качества.RTCDataChannel— канал для произвольных данных: сообщений чата, файлов, состояния игры.
Сигнализация, STUN и TURN
Прежде чем соединиться, браузеры должны обменяться описанием сессии и сетевыми адресами. Стандарт не определяет, как это сделать, — нужен свой сигнальный сервер, чаще всего на WebSocket. Большинство устройств сидит за NAT, поэтому сервер STUN помогает узнать внешний адрес, а когда прямое соединение невозможно, трафик идёт через ретранслятор TURN. На TURN приходится реальная нагрузка, и его мощность закладывают при запуске сервиса.
Минимальный пример в браузере
const stream = await navigator.mediaDevices.getUserMedia({ video: true, audio: true });
document.querySelector('video').srcObject = stream;
const pc = new RTCPeerConnection({ iceServers: [{ urls: 'stun:stun.example.org' }] });
stream.getTracks().forEach(track => pc.addTrack(track, stream));
const offer = await pc.createOffer();
await pc.setLocalDescription(offer);
// offer отправляют собеседнику через свой сигнальный сервер
Прямое соединение хорошо работает для двух-трёх участников. Для конференций на десятки человек ставят медиасервер, который принимает поток от каждого и раздаёт остальным: так нагрузка на канал пользователя не растёт с числом собеседников. На WebRTC построены видеозвонки в браузере, онлайн-консультации на сайтах клиник, голосовые ассистенты и сервисы удалённой поддержки.

