使用 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 服务绑定在 Azure Cosmos DB 更改源上出现新事件时发送实时消息的一个示例。
- 在 Azure Cosmos DB 集合中进行了更改。
- 更改事件传播到 Azure Cosmos DB 更改源。
- Azure Cosmos DB 触发器激活 Azure 函数以响应更改事件。
- SignalR 服务输出绑定将消息发布到 SignalR 服务。
- SignalR 服务将消息发布到所有连接的客户端。
身份验证和用户
使用 SignalR 服务可以向所有或一部分客户端(例如属于单个用户的客户端)广播消息。 可以将 Azure Functions 的 SignalR 服务绑定与应用服务身份验证相结合,以使用 Microsoft Entra ID 等提供程序对用户进行身份验证。 然后,你可以直接向这些经过身份验证的用户发送消息。
后续步骤
有关如何使用 Azure Functions 和 SignalR 服务的完整详细信息,请访问以下资源:
若要试用 Azure Functions 的 SignalR 服务绑定,请参阅: