Веб-связь в режиме реального времени
Как работает WebRTC
WebRTC (Web Real Time Communications) — это
стандарт, который описывает передачу потоковых аудиоданных, видеоданных и
контента между браузерами (без установки плагинов или иных расширений) или
другими поддерживающими его приложениями в режиме реального времени. Данная
технология позволяет превратить браузер в оконечный терминал
видеоконференцсвязи. Чтобы начать общение, достаточно просто открыть веб-страницу конференции.
Рассмотрим работу
технологии на примере звонка между двумя абонентами через браузер:
1.
Пользователь
открывает страницу, содержащую WebRTC контент.
2.
Браузер
запрашивает доступ к веб-камере и микрофону, если это необходимо. Пока
пользователь не разрешит доступ к устройству, оно не будет использоваться. В
случаях, когда это необязательно (например, при просмотре трансляций), никаких
дополнительных разрешений не требуется.
3.
В браузере,
инициирующем соединение, формируется SDP-пакет. По сути это текстовый файл,
содержащий всю необходимую информацию о параметрах соединения. Например, что
будет передаваться (звук, видео, данные), с помощью каких кодеков, какие
параметры поддерживаются браузером и т. д.
4.
В
зависимости от реализации технологии, инициатор соединения передаёт этот пакет
другим участникам. Зачастую для этого используется сигнальный сервер и
WebSocket протокол.
5.
На
принимающей стороне браузер получает SDP-пакет, а затем генерирует подобный, но
с учетом информации из первого. Второй пакет отправляется назад, к инициирующей
стороне. Теперь оба клиента уже имеют минимальное представление друг о друге.
6.
В
зависимости от реализации, параллельно с предыдущими шагами происходит анализ
состояния подключения к сети. Клиентам передаётся адрес STUN-сервера, который
используется, чтобы узнать внешний IP-адрес устройства. Он сравнивается с
внутренним IP-адресом для того, чтобы определить используется ли NAT в данном
подключении и, если да, то как маршрутизируются UDP-пакеты. В более сложных
случаях (например, когда используется двойной NAT), применяются TURN-сервера.
Они, по сути, являются ретрансляторами, превращая соединение клиент-клиент
(P2P) в клиент-сервер-клиент.
7.
Если все
шаги пройдены успешно, то соединение устанавливается. Периодически вызывается
событие onicecandidate, которое передаёт информацию об IP-адресах, настройках
NAT, попытках подключения между клиентами.
Преимущества и недостатки стандарта
У WebRTC есть ряд преимуществ: не требуется установка ПО; высокое качество связи благодаря: использованию
современных видео- и аудиокодеков;
автоматическому подстраиванию качества потока под условия соединения;
встроенной системе эхо- и шумоподавления; высокий уровень безопасности.
Так же есть и недостатки: все WebRTC решения несовместимы между собой, т.
к. стандарт описывает лишь способы передачи видео и звука, оставляя реализацию
способов адресации абонентов, отслеживания их доступности, обмена сообщениями и
файлами, планирования и прочего за разработчиком. Другими словами, вы не
сможете позвонить из одного WebRTC приложения в другое. Для пользователей,
которые беспокоятся о своей приватности, неприятным открытием станет то, что
WebRTC определяет их реальные IP-адреса. При этом сохранить анонимность не
поможет ни прокси, ни использование сети Tor. Скрыть IP-адрес можно с помощью
различных VPN сервисов, а также при использовании TURN-сервера. При
необходимости использование WebRTC можно отключить.
Популярность
технологии
На сегодняшний день WebRTC второй по популярности после
проприетарного протокола Zoom протокол видеосвязи и опережает все остальные
стандартные (H.323 и SIP) и проприетарные (Microsoft Teams и Cisco Webex)
протоколы.
Технология WebRTC оказала сильное влияние на развитие рынка ВКС.
После выхода в свет первых браузеров с поддержкой WebRTC в 2013 году
потенциальное количество терминалов видеоконференцсвязи по всему миру сразу
увеличилось на 1 млрд. устройств. По сути, каждый браузер стал ВКС терминалом,
обладающим базовыми возможностями для участия в видеоконференциях.
Использование в специализированных решениях
Использование различных
JavaScript библиотек и API облачных сервисов с поддержкой WebRTC позволяет
легко добавить поддержку видеосвязи в любые веб-проекты. Ранее для передачи данных
в реальном времени разработчикам приходилось изучать принципы работы протоколов
и использовать наработки других компаний, которые чаще всего требовали
дополнительного лицензирования, что увеличивало расходы. Уже сейчас WebRTC
активно используется для организации видео-контакт-центров, проведения вебинаров и т. п.
Список литературы
1.
WebRTC – Что это и как работает? [Электронный
ресурс]. – Режим доступа: https://trueconf.ru/webrtc.html
2. WebRTC API – Интерфейсы Web API [Электронный ресурс]. – Режим доступа: https://developer.mozilla.org/ru/docs/Web/API/WebRTC_API
3. Пьетро Романо, Салваторе Лорето. Коммуникации реального времени: проблемы, достижения, стандарты // Открытые системы.СУБД. — 2012. — № 9. — С. 50–53. URL: http://www.osp.ru/os/2012/09/13032514 (дата обращения 18.06.2014).