WebRTC

WebRTC


Что это?

Технология, позволяющая веб-браузерам и мобильным приложениям обмениваться аудио, видео и данным через простые АПИ.

Зачем придумали?

РТС нужны (чтобы голосом и видео общаться и данные передавать).

Раньше было дорого, сложно, корпоративно.

Веб сервисы уже использовали РТС, но пользователям надо было задрачиваться (ставить плагины, скачивать приложения).

ВебРТС сделали так, шо всё это работает через опенсорсные, бесплатные, стандартизированные АПИ, поддерживаемые веб-браузерами.

И чё как?

Воцап, Дискорд, Хенгаутс, ФБ Мессенджер.

АПИ

To acquire and communicate streaming data, WebRTC implements the following APIs:

  • MediaStream: get access to data streams, such as from the user’s camera and microphone.
  • RTCPeerConnection: audio or video calling, with facilities for encryption and bandwidth management.
  • RTCDataChannel: peer-to-peer communication of generic data.

Что нужно?

  1. Клиентское приложение
  2. Сигнальный сервер
  3. СТАН/ТЁРН
  4. Медиасерверы (кроме обычных птп звонков). Нужны для записи, транскодирования, АР и тд.

Как засетапить соединение?

Есть Пир 1 и Пир 2.

Пир 1 узнаёт свою информацию для подключения (публичный ай-пи адрес, номер порта) с помощью ICE-протокола, если есть NAT, обращаясь к STUN серверу. Или к TURN, если NAT сложный или фаерволл стоит. Инфа называется ICE candidate.

Пир 1 генерирует Session Description (номер сессии, время).

Пир 1 упаковывает Server Description и ICE candidate в один объект (тогда будет использоваться SDP протокол) или отдельно, тогда будет Trickle ICE.

Пир 1 через SDP и HTTP/WebSockets передаёт ICE-c и SD Пиру 2 через Signaling Mechanism (используется Signaling Server). Передача этих данных — это оффер. Пир 1 хранит это и у себя, Local Description.

Пир 2 получает, записывает у себя как Remote Description. Генерирует и отправляет свою инфу, записывая у себя её как Local Description.

Пир 1 получает инфу Пира 2 и записывает как Remote Description.

Инфа друг о друге и о сессии есть, можно начинать обмениваться данными по WebRTC.

Report Page