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 を使用してサービスに接続できます (他の言語も近いうちに利用可能になる予定です)。

シナリオの例

SignalR サービスのバインドを使用する方法の例として、Azure Functions を使用して Azure Cosmos DB および SignalR サービスと統合し、Azure Cosmos DB 変更フィードに新しいイベントが表示されたときにリアルタイム メッセージを送信することがあります。

Azure Cosmos DB, Azure Functions, SignalR Service

  1. Azure Cosmos DB コレクションで変更が行われます。
  2. Azure Cosmos DB 変更フィードに変更イベントが反映されます。
  3. Azure Cosmos DB トリガーを使用する変更イベントによって Azure Functions がトリガーされます。
  4. SignalR Service 出力バインドが、SignalR Service にメッセージを発行します。
  5. SignalR Service が、接続されているすべてのクライアントにメッセージを発行します。

認証およびユーザー

SignalR Service では、すべてまたはサブセット (単一ユーザーに属しているものなど) のクライアントにメッセージをブロードキャストできます。 Azure Functions 向けの SignalR Service のバインドは、App Service 認証と組み合わせることで、Microsoft Entra ID、Facebook、Twitter などのプロバイダーでユーザーを認証できます。 これらの認証されたユーザーにメッセージを直接送信できます。

次のステップ

Azure Functions とSignalR Service を一緒に使用する方法の完全な詳細については、以下のリソースにアクセスしてください。

Azure Functions 向けの SignalR Service バインドをお試しになる場合は、以下を参照してください。