Cloudflare Realtime を使うと、リアルタイムの音声、映像、データをアプリケーションに追加できます。Cloudflare Realtime は WebRTC を使います。ブラウザ、モバイル、ネイティブアプリなど幅広いプラットフォームで、最も低遅延に通信できる方式です。
Realtime はバックエンドとフロントエンドのアプリケーションと連携し、リアルタイム機能を追加します。
-
WebRTC のスケールは難しい: WebRTC サーバーのスケールに苦労するケースは多くあります。同じ「ルーム」に何人まで入れるかといった問題に直面したり、既存の高レベル API の考え方に合わない独自の仕組みを作りたい場合があります。
-
高い egress コスト: マネージドソリューションはクラウドの egress に高いプレミアムを上乗せするため、WebRTC の利用は高額になりがちです。自前でサーバーを運用すると、システム管理とスケールの負荷がかかります。Cloudflare はすでに 300 以上の拠点を持ち、一部では 1,000 台を超えるサーバーを運用しています。Cloudflare Realtime はこのアーキテクチャの上で容易にスケールし、最も低い WebRTC 利用コストを提供できます。
-
WebRTC は広がっている: 開発者は、WebRTC がビデオ会議だけのものではないと気づき始めています。WebRTC は多くのプラットフォームでサポートされ、成熟してよく理解されています。
-
意見を押しつけない: Cloudflare Realtime は SDK を提供しません。代わりに生の WebRTC にアクセスでき、既存の考え方に収まらない独自の課題を解けます。API は意図してシンプルです。
-
ルームがない: 他の WebRTC 製品と違い、Cloudflare Realtime はルームなどの抽象化ではなく、各トラック(音声 / 映像 / データ)を自分で制御できます。シンプルな pub/sub の上にプレゼンスプロトコルを定義します。各エンドユーザーは、音声 / 映像 / データトラックを自由に publish / subscribe できます。
-
ロックインがない: Cloudflare Realtime で SFU のスケール課題を解けます。ピアツーピア構成と組み合わせることもできます。Cloudflare Realtime を単独で使うこともできます。どこまで使うかは自分で決められます。
-
SFU: Realtime は、特定のデータを購読するクライアントへメディアデータを転送するのが得意な、特殊な pub/sub サーバーです。各クライアントは WebRTC で Cloudflare Realtime に接続し、WebRTC を使ってデータを送信、受信、またはその両方を行います。対象は音声 / 映像トラックや DataChannels です。
-
スケールする: Cloudflare のサーバーはすべて 1 台のサーバーのように動作するため、数百万の WebRTC クライアントが Cloudflare Realtime に接続できます。各クライアントは、ほかのクライアントとデータを送信、受信、またはその両方を行えます。
-
echo の例から始めます。Realtime App を作成したときの Cloudflare ダッシュボード、または demos からダウンロードできます。音声と映像の送受信方法がわかります。
-
セッション ID とトラック ID を受け渡して、誰がどのメディアを受信できるかを制御する方法を理解します。誰がどのメディアを受信するかは、自分で制御します。各メディアトラックは一意の ID で表されます。この ID の保存と配布は、自分の責任です。
- Cloudflare Realtime への各接続と、接続ごとに作成されるトラック ID を管理するアプリを作ります。トラックの保存と共有には、任意のツールを使えます。トラック ID の管理に Workers Durable Objects を使う本格的なビデオ会議アプリ Orange Meets ↗ など、demos のサンプルアプリを確認してください。