Azure SignalR Service と Azure Functions を使用したリアルタイム アプリ
Azure SignalR Services と Azure Functions を組み合わせて使用することで、サーバーレス環境でリアルタイムのメッセージング Web アプリを実行できます。 この記事では、これらのサービスの連携方法の概要について説明します。
Azure SignalR Service と Azure Functions は、どちらも、優れた拡張性を備えるフル マネージドのサービスです。 これらを利用すると、インフラストラクチャの管理に労力を割くことなく、アプリケーションの構築に専念できます。 サーバーレス環境でリアルタイム通信を提供する場合、この 2 つのサービスを一緒に使用するのが一般的です。
Azure サービスとのリアルタイム通信の統合
Azure Functions サービスでは、クラウド内でイベントが発生するたびにトリガーされるコードを、JavaScript、Python、C#、Java などのいくつかの言語で記述できます。 これらのイベントの例は次のとおりです。
- HTTP と webhook の要求
- 定期的なタイマー
- 次のような Azure サービスからのイベント。
- Event Grid
- Event Hubs
- Service Bus
- Azure Cosmos DB の変更フィード
- ストレージの BLOB およびキュー
- Salesforce や SQL Server などの Logic Apps コネクタ
Azure Functions を使用してこれらのイベントを Azure SignalR サービスと統合することによって、イベントが発生したことを数千のクライアントに通知できます。
Azure Functions と Azure SignalR サービスで実装できるリアルタイム サーバーレス メッセージングの一般的なシナリオは、次のとおりです。
- IoT デバイスのテレメトリをリアルタイム ダッシュ ボードまたはマップ上で可視化します。
- Azure Cosmos DB でドキュメントが更新されたときにアプリケーションのデータを更新します。
- Salesforce で新しい注文が作成されたときにアプリ内通知を送信します。
Azure Functions における SignalR サービスのバインド
Azure Functions における SignalR サービスのバインドによって、Azure Function アプリは SignalR サービスに接続されているクライアントにメッセージを発行できます。 クライアントは、.NET、JavaScript、および Java で利用可能な SignalR クライアント SDK を使用してサービスに接続できます (他の言語も近いうちに利用可能になる予定です)。
シナリオの例
Azure Functions による Azure Cosmos DB との統合は、Azure Cosmos DB 変更フィードに新しいイベントが表示されたとき、SignalR Service バインドを利用してリアルタイム メッセージを送信する方法の一例です。
- Azure Cosmos DB コレクションで変更が行われます。
- Azure Cosmos DB 変更フィードに変更イベントが反映されます。
- Azure Cosmos DB トリガーは、変更イベントに応答して Azure 関数をアクティブ化します。
- SignalR Service 出力バインドが、SignalR Service にメッセージを発行します。
- SignalR Service が、接続されているすべてのクライアントにメッセージを発行します。
認証およびユーザー
SignalR Service では、すべてまたはサブセット (単一ユーザーに属しているものなど) のクライアントにメッセージをブロードキャストできます。 Azure Functions の SignalR Service バインドを App Service 認証と組み合わせることで、Microsoft Entra ID、Facebook、X などのプロバイダーでユーザーを認証することができます。その後、それらの認証済みユーザーに直接メッセージを送信することができます。
次のステップ
Azure Functions とSignalR Service を一緒に使用する方法の完全な詳細については、以下のリソースにアクセスしてください。
- SignalR Service を使用した Azure Functions の開発と構成
- Azure Functions と SignalR Service を使って、Web アプリケーションの自動更新を有効にする
Azure Functions 向けの SignalR Service バインドをお試しになる場合は、以下を参照してください。