Azure SignalR Service のイベントに対応する

Azure SignalR Service のイベントは、最新のサーバーレス アーキテクチャを使用して、アプリケーションがクライアント接続の接続や接続解除に対応できるようにしています。 複雑なコードや、高価で非効率的なポーリング サービスは必要ありません。 イベントは、Azure Event Grid を通して、Azure FunctionsAzure Logic Apps などのサブスクライバー、またはユーザー独自のカスタム HTTP リスナーにプッシュされます。 Azure SignalR では、使用した分だけ支払います。

Azure SignalR Service イベントは、豊富な再試行ポリシーと配信不能配信を通じてアプリケーションに信頼性の高い配信サービスを提供する Event Grid サービスに確実に送信されます。 詳細については、「Event Grid のメッセージの配信と再試行」を参照してください。

Event Grid Model

サーバーレスの状態

Azure SignalR Service のイベントは、クライアント接続がサーバーレスの状態の場合にのみアクティブになります。 クライアントがハブ サーバーにルーティングされない場合は、サーバーレス状態になります。 クラシック モードは、クライアント接続で接続しているハブにハブ サーバーがない場合にのみ動作します。 ベスト プラクティスとして、サーバーレス モードが推奨されます。 サービス モードの詳細については、サービス モードの選択方法に関する記述を参照してください。

使用可能な Azure SignalR Service のイベント

Event Grid は、イベント サブスクリプションを使用して、イベント メッセージをサブスクライバーにルーティングします。 Azure SignalR Service のイベント サブスクリプションは、2 種類のイベントをサポートします。

イベント名 説明
Microsoft.SignalRService.ClientConnectionConnected クライアント接続が接続されたときに発生します。
Microsoft.SignalRService.ClientConnectionDisconnected クライアント接続が接続解除されたときに発生します。

イベント スキーマ

Azure SignalR Service のイベントには、データの変更に対応するために必要なすべての情報が含まれます。 EventType プロパティが Microsoft.SignalRService始まる Azure SignalR Service イベントを識別できます。 Event Grid イベントのプロパティの使用法について詳しくは、「Event Grid イベント スキーマ」をご覧ください。

クライアント接続接続イベントの例を次に示します。

[{
  "topic": "/subscriptions/{subscription-id}/resourceGroups/signalr-rg/providers/Microsoft.SignalRService/SignalR/signalr-resource",
  "subject": "/hub/chat",
  "eventType": "Microsoft.SignalRService.ClientConnectionConnected",
  "eventTime": "2019-06-10T18:41:00.9584103Z",
  "id": "831e1650-001e-001b-66ab-eeb76e069631",
  "data": {
    "timestamp": "2019-06-10T18:41:00.9584103Z",
    "hubName": "chat",
    "connectionId": "crH0uxVSvP61p5wkFY1x1A",
    "userId": "user-eymwyo23"
  },
  "dataVersion": "1.0",
  "metadataVersion": "1"
}]

詳しくは、SignalR Service のイベント スキーマに関する記事をご覧ください。

次のステップ

Event Grid の詳細について理解し、Azure SignalR Service のイベントを試してみてください。