С появлением WebRTC и растущими возможностями браузеров для обработки одноранговой связи в режиме реального времени стало проще, чем
Если вам нужно немного предыстории WebRTC и одноранговой связи, рекомендую прочитать «Рассвет WebRTC «и «Введение в API getUserMedia «.
Основное внимание мы будем уделять SimpleWebRTC как платформе. Позже мы кратко рассмотрим другие коммерческие альтернативы и альтернативы с открытым исходным кодом, которые могут помочь вам добиться того же.
Что такое WebRTC
WebRTC (
В более старых версиях браузеров и устаревших браузерах, таких как Internet Explorer, эта технология отсутствует. Пользователям необходимо будет использовать современные браузеры. Вы можете проверить полный список поддерживаемых браузеров:
В январе 2021 года спецификация WebRTC 1.0 была переведена из статуса кандидата в рекомендации в статус рекомендации консорциумом World Wide Web. Это замечательное достижение, учитывая, что впервые технология была представлена общественности 10 лет назад.
Спецификация WebRTC описывает, как браузеры могут получать доступ к локальным мультимедийным устройствам и как они могут передавать мультимедиа и общие данные приложений в браузер с использованием набора протоколов реального времени. Он делает это с помощью набора
Важно отметить, что WebRTC не охватывает все, например, сигнализацию, процесс установления соединения между браузерами. Эта часть спецификации была исключена, чтобы предотвратить ограничения потенциально новой технологии. Вторая причина заключалась в том, что WebRTC — это в первую очередь технология на стороне клиента, а такие проблемы, как сеансы, лучше всего решать с помощью серверных технологий.
Как работает сигнализация для
Само определение WebRTC — это одноранговая связь между
Устройства NAT защищают персональные компьютеры от прямого использования злоумышленниками через Интернет через
Чтобы преодолеть эту проблему, Инженерная рабочая группа Интернета предложила протокол ICE (установление интерактивного соединения), который позволяет частным
Это предполагает использование общедоступного сигнального сервера, к которому оба клиента могут легко подключиться. Одноранговые компьютеры подключаются к этому серверу и используют его для обмена
Вот анимированная демонстрация:
webrtc оглушает только сигнализацию
Фото предоставлено: Сигнализация WebRTC
Чтобы настроить сигнализацию WebRTC, платформа ICE требует, чтобы вы предоставили два типа серверов, подробно описанных ниже.
1.
Сервер STUN (Session Traversal Utilities for NAT) делает именно то, что я только что описал выше. Он просто предоставляет пространство для встреч компьютеров для обмена контактной информацией. После обмена информацией между одноранговыми компьютерами устанавливается соединение, после чего сервер STUN не участвует в остальной части диалога.
Вот пример скрипта, который запускается на клиенте и позволяет браузеру инициировать подключение через
Соединения, установленные через серверы STUN, являются наиболее идеальным и экономичным типом связи WebRTC. Пользователи почти не несут эксплуатационных расходов. К сожалению, соединение может не установиться для некоторых пользователей
2. ПОВЕРНИТЕ сервер
Сервер TURN (Traversal Using Relay NAT) является расширением сервера STUN. Отличие от своего предшественника в том, что он обрабатывает весь сеанс связи.
По сути, после установления соединения между пирами он получает потоки от одного пира и ретранслирует их другому, и наоборот. Этот тип связи является более дорогим, и хост должен платить за обработку и пропускную способность, необходимые для работы сервера TURN.
Ниже представлено графическое изображение всего процесса передачи сигналов с участием сначала сервера STUN, а затем сервера TURN в качестве запасного варианта:
webrtc оглушает сигнал поворота
Фото предоставлено: Полная архитектурная схема, показывающая весь процесс WebRTC.
Создание пользовательского приложения для видеочата
Хотя можно настроить собственное решение для видеочата, используя простой код JavaScript и бесплатные общедоступные серверы STUN, не все смогут общаться друг с другом на вашей платформе. Использование серверов TURN является обязательным, если вы хотите предоставить надежный сервис всем своим пользователям.
Как упоминалось ранее, настройка платформ WebRTC может быть сложной. К счастью для нас, у нас есть универсальные коммерческие платформы, которые упрощают создание приложения для видеочата WebRTC. Давайте теперь посмотрим, как SimpleWebRTC может облегчить наше бремя.
Что такое SimpleWebRTC
SimpleWebRTC — это платформа, которая предоставляет разработчикам простой и экономичный сервис для создания и развертывания пользовательских приложений реального времени с использованием React. В частности, они обеспечивают следующее:
SimpleWebRTC SDK: интерфейсная библиотека
Хостинг: серверы STUN/TURN и SFU (Selective Forward Unit).
Техническая поддержка
Разработка пользовательских приложений и консультационные услуги по WebRTC
Однопользовательская и локальная инфраструктура
Talky: бесплатное приложение для видеочата, полностью созданное с помощью SimpleWebRTC.
Ниже приведены примеры скриншотов некоторых пользовательских проектов видеочата, которые они помогли разработать и запустить своим клиентам.
Фото кредит: Talky
Фото предоставлено: приложение для
Основные услуги WebRTC, предоставляемые платформой SimpleWebRTC, включают:
безопасная потоковая передача видео, голоса и демонстрации экрана
сквозное шифрование
поддержка до 30 одновременных пользователей
неограниченное количество комнат
Что касается цен, они предлагают следующие планы:
Малая группа: до 6 участников, от $5 в месяц
Большая группа: до 30 участников, от $3 в месяц
Преимущество плана для малых групп состоит в том, что сквозное шифрование доступно по сравнению с планом для больших групп. В плане Small Group 60–80% сеансов представляют собой одноранговые соединения, при которых медиапотоки никогда не касаются серверов. Потребление пропускной способности для таких типов сессий не тарифицируется.
В планах для больших групп трафик направляется через сервер, называемый SFU (Selective Forwarding Unit), где измеряются все потоки.
Важно отметить, что большинство коммерческих альтернатив, которые мы вкратце рассмотрим позже, имеют поминутную оплату. На первый взгляд, он кажется вполне доступным. Однако за одноранговые соединения взимается плата, которая для SimpleWebRTC бесплатна.
Предпосылки
Клиентская библиотека SimpleWebRTC зависит от экосистемы React и Redux. Вам необходимо обладать базовыми навыками в следующих областях:
Реагировать
Редукс
Асинхронные библиотеки Redux, такие как Redux Thunk, Redux Saga и Redux Observables.
Будущие версии SimpleWebRTC SDK будут включать поддержку других фреймворков, таких как React Native, Angular, Flutter и Vue.js. Есть также планы по выпуску решения для видеочата «без кода», которое позволит пользователям автоматически развертывать собственную фирменную версию Talky.
Настройка учетной записи
Перейдите на страницу регистрации simplewebrtc.com и зарегистрируйте новую учетную запись. Вам будет предоставлено 2 ГБ пропускной способности плюс еще 3 ГБ, если вы подпишитесь на их информационный бюллетень. Этого разрешения должно быть достаточно для разработки и тестирования приложения для видеочата.
регистрация аккаунта
После регистрации вам нужно будет подтвердить свой адрес электронной почты. Выполнение этого шага должно привести вас на страницу панели инструментов, где вы получите свой ключ API.
зарегистрировать
С помощью этого ключа API вы можете начать создавать собственное приложение WebRTC. В следующем разделе мы запустим полный образец приложения, созданный командой SimpleWebRTC.
Сборка и запуск примера приложения
Прежде чем мы запустим пример приложения, давайте кратко рассмотрим, как мы можем начать с нуля.
Как вы можете видеть в приведенном выше коде, библиотека SimpleWebRTC обрабатывает
Вместо этого мы рассмотрим полный образец проекта, который вы можете загрузить с GitHub, где вы сможете увидеть, как все это устроено. После загрузки вам нужно будет указать свой ключ API в формате, public/index.htmlкак показано ниже:
Вам также потребуется выполнить быстрый видеотест в браузере, чтобы убедиться, что технология видеовызовов API работает с вашей стороны. Далее вы будете перенаправлены на панель инструментов, где вам нужно создать комнату. Назовем helloпока. Панель инструментов предоставляет ряд настраиваемых параметров для вашей комнаты, таких как конфиденциальность, совместное использование экрана и разрешения на запись.
Вашему приложению потребуется сборщик, такой как webpack или Rollup, для работы с этой библиотекой. К сожалению, пользователям Vite и Parcel не повезло. В их репозитории GitHub есть полный образец приложения React, который вы можете проверить. Есть инструкции, как настроить приложение и как развернуть его на Netlify.
Несмотря на то, что библиотека делает много тяжелой работы, вы заметите, что предоставленный пример является сложным, так как есть множество крайних случаев, которые вам нужно отслеживать, и функции, которые вы должны предоставить, чтобы предоставить вашим пользователям надежный опыт видеочата.
Другие альтернативы
Есть много других альтернатив SimpleWebRTC и Daily, которые я перечислю далее. К коммерческим относятся:
Ксирсис
Сумерки
Вонаж
Ледяная гора
Twilio, Vonage и Frozen Mountain предоставляют разработчикам внешние библиотеки и внутренние серверы, необходимые для создания и запуска решения для видеочата в реальном времени. Xirsys предоставляет только внутренние серверы, то есть серверы STUN и TURN. Вам нужно будет использовать библиотеку с открытым исходным кодом, такую как PeerJS, чтобы клиентская библиотека могла подключиться к ней.
В Интернете доступно множество библиотек WebRTC с открытым исходным кодом. Однако большинство из них не поддерживаются активно, за исключением следующих:
PeerJS
Открыть EasyRTC
Руководствуясь этим руководством в Google Codelabs, вы можете использовать простой JavaScript и несколько библиотек Node.js для создания простого приложения для видеочата. Тем не менее, есть много крайних случаев, не описанных в руководстве, с которыми вам придется разобраться самостоятельно.
Заключение
В заключение, создание решения для видеочата в реальном времени с помощью WebRTC проще при использовании коммерческой платформы. Выбрать путь с открытым исходным кодом можно, но вам потребуется разместить собственные серверы TURN, чтобы обеспечить надежное соединение для всех ваших пользователей. В любом случае процесс сборки может занять много времени, учитывая относительную сложность примеров приложений, которые мы рассмотрели.
Ключевой вопрос, который следует задать себе, заключается в том, стоит ли тратить время на создание собственного решения для работы в реальном времени. Если вы не планируете сделать WebRTC своим основным бизнесом, вам, вероятно, потребуется сначала проконсультироваться с компанией, имеющей опыт работы с этой технологией.