Azure Web PubSub の基本的な概念
Azure Web PubSub サービスは、リアルタイム メッセージング Web アプリを作成するのに役立ちます。 クライアントによるサービスへの接続には標準の WebSocket プロトコルが使用され、これらのクライアントを管理できるように、サービスにより REST API と SDK が公開されます。
条件
サービスで使用される重要な用語を次に示します。
接続: 接続は、クライアントまたはクライアント接続とも呼ばれ、Web PubSub サービスに接続されている個々の WebSocket 接続を表します。 正常に接続されると、一意の接続 ID が Web PubSub サービスによってこの接続に割り当てられます。
ハブ: ハブは、一連のクライアント接続の論理的な概念です。 通常は、チャット ハブや通知ハブなど、1 つのシナリオに 1 つのハブを使用します。 クライアント接続の接続時には、1 つのハブに接続し、その有効期間中はそのハブに属します。 クライアント接続がハブに接続すると、ハブが存在します。 異なるアプリケーションでは、異なるハブ名を使用して、1 つの Azure Web PubSub サービスを共有できます。 ハブの数に厳密な制限はありませんが、ハブはグループに比べてより多くのサービス負荷を消費します。 動的に生成するのではなく、事前に定義されたハブセットを作成することをお勧めします。
グループ: グループはハブへの接続のサブセットです。 必要な場合はいつでも、クライアント接続をグループに追加したり、グループからクライアント接続を削除したりできます。 たとえば、クライアントがチャット ルームに参加したり、クライアントがチャット ルームを離れたりするときに、このチャット ルームをグループと見なすことができます。 クライアントは複数のグループに参加できます。また、1 つのグループに複数のクライアントを含めることもできます。 グループはグループ "セッション" のようなもので、グループセッションは誰かがグループに参加すると作成され、グループに誰もいなくなるとセッションは終了します。 グループに送信されたメッセージは、グループに接続されているすべてのクライアントに配信されます。
ユーザー: Web PubSub への接続を 1 人のユーザーに所属させることができます。 1 人のユーザーが複数のデバイスまたは複数のブラウザー タブに接続されている場合など、ユーザーが複数の接続を持つ場合があります。
メッセージ: クライアントが接続されている場合は、WebSocket 接続を介して、アップストリーム アプリケーションにメッセージを送信したり、アップストリーム アプリケーションからメッセージを受信したりできます。 メッセージはプレーンテキスト、バイナリ、または JSON 形式で指定でき、最大サイズは 1 MB です。
クライアント接続と ConnectionId: クライアントは
/client
エンドポイントに接続します。接続されると、サービスによって一意のconnectionId
がクライアント接続の一意の ID として生成されます。 その後、ユーザーはこのconnectionId
を使用してクライアント接続を管理できます。 詳細については、「クライアント プロトコル」セクションを参照してください。クライアント イベント: イベントは、クライアント接続のライフサイクル中に作成されます。 たとえば、シンプル WebSocket クライアント接続では、サービスへの接続が試みられるときに
connect
イベント、サービスに正常に接続したときにconnected
イベント、サービスにメッセージを送信するときにmessage
イベント、サービスから切断したときにdisconnected
イベントが作成されます。 クライアント イベントの詳細については、「クライアント プロトコル」セクションを参照してください。イベント ハンドラー: イベント ハンドラーには、クライアント イベントを処理するロジックが含まれています。 事前にポータルまたは Azure CLI から、サービスにイベント ハンドラーを登録して構成します。 詳細については、「イベント ハンドラー」セクションを参照してください。
イベント リスナー (プレビュー): イベント リスナーはクライアント イベントをリッスンするだけであり、応答によってクライアントの有効期間に干渉することはありません。 詳細は「イベント リスナー」セクションにあります。
サーバー: サーバーでは、クライアント イベントを処理したり、クライアント接続を管理したり、グループにメッセージを発行したりできます。 イベント ハンドラーもイベント リスナーもサーバー側と見なされます。 サーバーの詳細については、「サーバー プロトコル」セクションを参照してください。
重要
Hub
、Group
、UserId
は、クライアントを管理してメッセージを送信するときに重要になるロールです。 これらは、プレーン テキストとしてさまざまな REST API 呼び出しで必要となるパラメータになります。 そのため、これらのフィールドに機密情報を含めないでください。 たとえば、漏洩リスクが高い資格情報やベアラー トークンなどです。
ワークフロー
サービスを使用する一般的なワークフローを次に示します。
上のワークフロー グラフに示されているように:
クライアントは、WebSocket トランスポートを使用してサービス
/client
エンドポイントに接続します。 サービスは、すべての WebSocket フレームを、構成されているアップストリーム (サーバー) に転送します。 WebSocket 接続では、サーバーが処理する任意のカスタム サブプロトコルに接続することも、クライアントが pub/sub を直接実行できるようにするサービスでサポートされているサブプロトコル (例:json.webpubsub.azure.v1
) に接続することもできます。 詳細については、「クライアント プロトコル」を参照してください。サービスは異なるクライアント イベントで CloudEvents プロトコル を使用してサーバーを呼び出します。 CloudEvents は、Cloud Native Computing Foundation (CNCF) によってホストされるイベントの構造とメタデータ記述の標準化されたプロトコルに依存しない定義です。 詳細については、「サーバー プロトコル」を参照してください。
サーバーは、REST API を使用してサービスを呼び出し、クライアントにメッセージを送信したり、接続されているクライアントを管理したりできます。 詳細については、「サーバー プロトコル」を参照してください
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示