← Cloudflare Realtime / realtime / sfu
Сессии и треки
Cloudflare Realtime предлагает простой, но мощный фреймворк для создания решений реального времени. В основе этой системы лежат три ключевых понятия: Приложения, Сеансы и Треки. Знакомство с этими концепциями критически важно для использования Realtime.
Приложение
Realtime Application представляет собой среду, в которой могут взаимодействовать различные объекты Session и Track. Примерами такой среды могут быть production, staging и другие окружения, где нужно разделять объекты Session и Track. Статистику использования Cloudflare Realtime можно получить на уровне Application, Session или Track.
Сеансы
A Сессия в Cloudflare Realtime напрямую соответствует WebRTC PeerConnection. Она представляет собой установление канала связи между клиентом и ближайшим дата-центром Cloudflare, который определяется anycast-маршрутизацией Cloudflare. Как правило, клиент поддерживает единственную Session, охватывающую все взаимодействия между клиентом и Cloudflare.
- Сопоставление один к одному с PeerConnection: Каждый Session напрямую представляет собой WebRTC PeerConnection и обеспечивает передачу медиаданных в реальном времени.
- Anycast-маршрутизация: Клиент подключается к ближайшему дата-центру Cloudflare, что оптимизирует задержку и производительность.
- Единый канал связи: один Session может обрабатывать все типы взаимодействия между клиентом и Cloudflare, обеспечивая непрерывный поток данных.
Треки
В рамках Session может быть один или несколько Треки.
- Треки соответствуют MediaStreamTrack: Треки соответствуют концепции MediaStreamTrack и обеспечивают передачу аудио, видео или данных.
- Глобально уникальные идентификаторы: Когда вы отправляете трек в Cloudflare, ему присваивается уникальный ID, который затем можно использовать, чтобы получить этот трек в другой сессии.
- Доступно глобально: Возможность отправлять и получать дорожки лежит в основе того, что делает Realtime универсальным инструментом для приложений реального времени. Каждая дорожка доступна глобально и может быть получена из любой Session в рамках App.
Realtime как программируемый «коммутатор»
Аналогия с коммутатором хорошо подходит для понимания Realtime. Исторически операторы коммутаторов соединяли звонки, вручную вставляя штекеры. Похожим образом Realtime обеспечивает динамическую маршрутизацию медиапотоков, выступая в роли программируемого коммутатора для современной связи в реальном времени.
За рамками «Rooms», «Users» и «Participants»
Многие SFU используют концепцию "комнат" для управления медиапотоками между пользователями, но у такого подхода есть ограничения по масштабируемости и гибкости. Cloudflare Realtime использует более гранулярную и гибкую модель на основе Sessions и Tracks, что открывает широкий спектр сценариев использования:
- Масштабные удалённые мероприятия, например «неформальные беседы» с тысячами участников.
- Интерактивные беседы с возможностью приглашать зрителей «на сцену».
- Образовательные приложения, в которых преподаватель может проводить презентацию одновременно в нескольких виртуальных классах.
Presence Protocol vs. Media Flow
Realtime разделяет протокол присутствия и медиапоток, что обеспечивает масштабируемость и гибкость в приложениях реального времени. Благодаря этому разделению разработчики могут создавать разные сценарии: от камерных звонков до масштабных трансляций с низкой задержкой.