コンテンツにスキップ

WebSocketを使用した耐久オブジェクト

WebSocketは、クライアントとサーバー間のリアルタイム通信を可能にします。Cloudflareの耐久オブジェクトとワーカーは、クライアントまたはサーバーとしてWebSocketエンドポイントとして機能できます。

アプリケーションがチャットルームやゲームマッチのように複数のWebSocket接続を調整する必要がある場合、クライアントはサーバー上の単一の調整ポイントにメッセージを送信する必要があります。

耐久オブジェクトは、Cloudflare Workersの単一の調整ポイントを提供し、複数のクライアントと接続にわたって状態を持続させるためにWebSocketと並行して使用されることがよくあります。

ワーカーをWebSocket専用で使用する他のユースケースもありますが、WebSocketは耐久オブジェクトと組み合わせることで最も有用です。

クライアントがWebSocketを使用してアプリケーションに接続すると、サーバー生成のメッセージを既存のソケット接続を使用して送信する方法が必要です。複数のクライアントは、ユニークIDで指定された特定の耐久オブジェクトとWebSocket接続を確立できます。耐久オブジェクトは、その後、WebSocket接続を介して各クライアントにメッセージを送信できます。

耐久オブジェクトは、WebSockets APIで説明されているWeb標準APIを使用できます。耐久オブジェクトとWebSocketを使用した例については、Cloudflare Edge Chat Demoを参照してください。

WebSocketの休止

WebSocketの休止APIは、現在イベントハンドラー(WebSocketメッセージ、HTTPリクエスト、またはアラームの処理など)を実行していない耐久オブジェクトを、WebSocketを接続したままメモリから削除することを可能にします(「休止」)。

休止APIを介して作成されたWebSocketを持つ耐久オブジェクトは、非アクティブな期間中にDuration (GB-s) chargesの請求が発生しません。これは、通常のWebSockets APIを使用する耐久オブジェクトとは異なります。

WebSocketの休止APIには以下が含まれます:

  • Web標準WebSocket APIに対するCloudflare特有の拡張。
  • 耐久オブジェクトのstateに関する関連メソッド。
  • WebSocketイベントを処理するために耐久オブジェクトが実装できるハンドラーメソッド

WebSocketの休止APIを使用すると、耐久オブジェクト内でWebSocket接続を終了(プロキシではなく)し、Transactional Storage API内に保存された状態、外部サービスへのHTTPフェッチ、および/またはR2Workers KVに保存されたデータに基づいて、すべての接続クライアントにメッセージをプッシュできます。

WebSocketプロキシのユースケースについては、標準WebSocket APIドキュメントを参照してください。

休止中の耐久オブジェクトの対応するハンドラーメソッドにイベントが発生すると、メモリに戻ります。これにより耐久オブジェクトのコンストラクタが呼び出されるため、WebSocketの休止を使用する際はコンストラクタ内の作業を最小限に抑えることが最善です。


関連リソース