Cloudflare Realtime 为构建实时体验提供了一个简单但强大的框架。该系统的核心是三个关键概念:应用(Applications)、会话(Sessions)和轨道(Tracks)。熟悉这些概念对于使用 Realtime 至关重要。
Realtime 应用是不同会话和轨道可以进行交互的环境。例如生产、暂存(staging)或您希望将会话和轨道隔离开来的其他不同环境。可以在应用、会话或轨道级别查询 Cloudflare Realtime 的使用情况。
Cloudflare Realtime 中的 Session 直接对应于 WebRTC PeerConnection。它表示客户端与根据 Cloudflare 的 anycast 路由确定的最近 Cloudflare 数据中心之间建立的通信通道。通常,客户端将维持单个 Session,包揽客户端与 Cloudflare 之间的所有通信。
- 与 PeerConnection 的一对一映射:每个 Session 是 WebRTC PeerConnection 的直接体现,有助于实时媒体数据传输。
- Anycast 路由:客户端连接到最近的 Cloudflare 数据中心,从而优化延迟和性能。
- 统一通信通道:单个 Session 可以处理客户端与 Cloudflare 之间的所有通信类型,确保流程化的数据流。
在一个 Session 内,可以有一个或多个 Tracks。
- Tracks 映射到 MediaStreamTrack:Tracks 与 MediaStreamTrack 概念保持一致,有助于音频、视频或数据传输。
- 全球唯一 ID:当您将 track 推送到 Cloudflare 时,它会被分配一个唯一 ID,然后该 ID 可用于在其他地方的另一个会话中拉取该轨道。
- 全球可用:推送和拉取轨道的能力是使 Realtime 成为实时应用程序的多功能工具的核心。每个轨道都可以在全球范围内使用,并可从 App 内的任何 Session 中检索。
电话交换机的比喻非常适合理解 Realtime。历史上,电话交换机操作员通过手动插拔插头来接通电话。类似地,Realtime 允许动态路由媒体流,充当现代实时通信的可编程电话交换机。
虽然许多 SFUs 利用诸如“房间”之类的概念来管理用户之间的媒体流,但这种方法在可扩展性和灵活性方面存在局限性。Cloudflare Realtime 选择在 Sessions 和 Tracks 上采用更细粒度和灵活的模型,从而支持广泛的使用场景:
- 大规模远程活动,例如有数千名参与者的“炉边谈话”。
- 具有将听众带到“台上”能力的交互式对话。
- 教师可以同时向多个虚拟教室进行演示的教育类应用程序。
Realtime 区分了呈现协议(presence protocol)和媒体流,从而在实时应用程序中实现了可扩展性和灵活性。这种分离使开发人员能够打造量身定制的体验,从私密通话到大规模、低延迟的广播。