使用 Azure SignalR 服务和 Azure Functions 的实时应用

将 Azure SignalR 服务与 Azure Functions 结合使用,可以在无服务器环境中运行实时消息传递 Web 应用。 本文概述这些服务如何协同工作。

Azure SignalR 服务和 Azure Functions 都是完全托管的、高度可缩放的服务,让你可以专注于生成应用程序而不是管理基础结构。 我们通常会将这两个服务结合使用,以在无服务器环境中提供实时通信。

将实时通信与 Azure 服务集成在一起

Azure Functions 服务允许你以 JavaScript、Python、C# 和 Java 等多种语言编写代码,在云中发生事件时触发。 这些事件的示例包括:

  • HTTP 和 Webhook 请求
  • 周期性定时器
  • Azure 服务中的事件,例如:
    • 事件网格
    • 事件中心
    • 服务总线
    • Azure Cosmos DB 更改源
    • 存储 Blob 和队列
    • 逻辑应用连接器,例如 Salesforce 和 SQL Server

通过使用 Azure Functions 将这些事件与 Azure SignalR Service相集成,可在事件发生时通知数以千计的客户端。

可以使用 Azure Functions 和 SignalR Service 实现的实时无服务器消息传递的一些常见情况包括:

  • 在实时仪表板或地图上可视化 IoT 设备遥测。
  • 在 Azure Cosmos DB 中更新文档时更新应用程序中的数据。
  • 在 Salesforce 中创建新订单时发送应用内通知。

Azure Functions 的 SignalR Service 绑定

通过 Azure Functions 的 SignalR Service 绑定,可以使用 Azure Function 应用向连接到 SignalR Service 的客户端发布消息。 客户端可以使用 .NET、JavaScript 和 Java 中可用的 SignalR 客户端 SDK 连接到服务,即将推出更多语言。

示例方案

使用 Azure Functions 将 Azure Cosmos DB 和 SignalR Service 集成在一起以便在 Azure Cosmos DB 更改源上出现新事件时发送实时消息,这就是使用 SignalR Service 绑定的一个示例。

Azure Cosmos DB, Azure Functions, SignalR Service

  1. 在 Azure Cosmos DB 集合中进行了更改。
  2. 更改事件传播到 Azure Cosmos DB 更改源。
  3. 通过使用 Azure Cosmos DB 触发器的更改事件触发 Azure Functions。
  4. SignalR 服务输出绑定将消息发布到 SignalR 服务。
  5. SignalR 服务将消息发布到所有连接的客户端。

身份验证和用户

使用 SignalR 服务可以向所有或一部分客户端(例如属于单个用户的客户端)广播消息。 可以将 Azure Functions 的 SignalR 服务绑定与应用服务身份验证相结合,以使用 Microsoft Entra ID 等提供程序对用户进行身份验证。 然后,你可以直接向这些经过身份验证的用户发送消息。

后续步骤

有关如何使用 Azure Functions 和 SignalR 服务的完整详细信息,请访问以下资源:

若要试用 Azure Functions 的 SignalR 服务绑定,请参阅: