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 построены видеозвонки в браузере, онлайн-консультации на сайтах клиник, голосовые ассистенты и сервисы удалённой поддержки.

Обновлено:

Все термины раздела «Backend»

Что будем искать? Например,Продвижение