你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Functions 的 SignalR Service 绑定
此系列文章介绍如何在 Azure Functions 中使用 SignalR 服务绑定进行身份验证,并向连接到 Azure SignalR 服务的客户端发送实时消息。 Azure Functions 运行时版本 2.x 和更高版本支持 SignalR 服务的输入和输出绑定。
操作 | 类型 |
---|---|
处理来自 SignalR 服务的消息 | 触发器绑定 |
返回服务终结点 URL 和访问令牌 | 输入绑定 |
发送 SignalR 服务消息和管理组 | 输出绑定 |
安装扩展
你安装的扩展 NuGet 包取决于你在函数应用中使用的 C# 模式:
函数在独立的 C# 工作进程中执行。 若要了解详细信息,请参阅有关在独立工作进程中运行 C# Azure Functions 的指南。
通过安装此 NuGet 包将该扩展添加到你的项目。
安装捆绑包
SignalR 服务扩展是在 host.json 项目文件中指定的扩展捆绑包的一部分。 在创建面向版本 3.x 或更高版本的项目时,应该已经安装好此捆绑包。 若要了解详细信息,请参阅扩展捆绑包。
添加依赖项
若要在 Java 函数中使用 SignalR 服务注释,需将对 azure-functions-java-library-signalr 项目(1.0 或更高版本)的依赖项添加到 pom.xml 文件。
<dependency>
<groupId>com.microsoft.azure.functions</groupId>
<artifactId>azure-functions-java-library-signalr</artifactId>
<version>1.0.0</version>
</dependency>
连接
可以使用连接字符串或Microsoft Entra 标识连接到Azure SignalR 服务。
连接字符串
有关如何检索Azure SignalR 服务的连接字符串的说明,请参阅Azure SignalR 服务中的连接字符串
此连接字符串应存储在具有名称AzureSignalRConnectionString
的应用程序设置中。 可以使用绑定配置的属性自定义应用程序设置名称 connectionStringSetting
。
基于标识的连接
如果使用版本 1.7.0 或更高版本,而不是将连接字符串与机密配合使用,则可以让应用使用 Microsoft Entra 标识。
首先,应确保Microsoft Entra 标识具有SignalR 服务所有者的角色。
然后,你将使用通用前缀 AzureSignalRConnectionString
定义设置。 可以使用绑定配置的属性自定义前缀名称 connectionStringSetting
。
在此模式下,设置包括以下项:
properties | 环境变量模板 | 说明 | 必须 | 示例值 |
---|---|---|---|---|
服务 URI | AzureSignalRConnectionString__serviceUri |
服务终结点的 URI。 仅配置“服务 URI”时,扩展会尝试使用 DefaultAzureCredential 类型对服务进行身份验证。 | 是 | https://mysignalrsevice.service.signalr.net |
令牌凭据 | AzureSignalRConnectionString__credential |
定义如何为连接获取令牌。 如果部署的 Azure 函数打算使用托管标识身份验证,则此设置应设置为 managedidentity 。 仅当托管标识在托管环境中可用时,此值才有效。 |
否 | managedidentity |
客户端 ID | AzureSignalRConnectionString__clientId |
当 credential 设置为 managedidentity 时,此属性可以设为指定在获取令牌时要使用的用户分配的标识。 该属性接受与分配给应用程序的用户分配的标识对应的客户端 ID。 同时指定资源 ID 和客户端 ID 是无效的。 如果未指定,则使用系统分配的标识。 在本地开发方案中使用时,此属性的使用方式不同,且不应设置 credential 。 |
否 | 00000000-0000-0000-0000-000000000000 |
资源 ID | AzureSignalRConnectionString__managedIdentityResourceId |
当 credential 设置为 managedidentity 时,此属性可以设为指定在获取令牌时要使用的资源标识符。 该属性接受与用户定义的托管标识的资源 ID 对应的资源标识符。 同时指定资源 ID 和客户端 ID 是无效的。 如果两者都没有指定,则会使用系统分配的标识。 在本地开发方案中使用时,此属性的使用方式不同,且不应设置 credential 。 |
否 | /subscriptions/0000000-0000-0000-0000-0000000000000/resourceGroups/mygroup/providers/Microsoft.SignalRService/SignalR/mysignalrservice |
注意
使用local.settings.json
本地、Azure 应用程序配置或密钥库的文件提供基于标识的连接的设置时,请在设置名称中替换为__
:
,以确保正确解析名称。
例如,AzureSignalRConnectionString:serviceUri
。
多个终结点设置
还可以配置多个终结点并为每个终结点指定标识设置。
在这种情况下,请将设置作为 Azure__SignalR__Endpoints__{endpointName}
前缀。 {endpointName}
这是由你分配的任意名称,用于将一组设置关联到服务终结点。 不能通过connectionStringSetting
属性自定义前缀Azure__SignalR__Endpoints__{endpointName}
。
properties | 环境变量模板 | 说明 | 必须 | 示例值 |
---|---|---|---|---|
服务 URI | Azure__SignalR__Endpoints__{endpointName}__serviceUri |
服务终结点的 URI。 仅配置“服务 URI”时,扩展会尝试使用 DefaultAzureCredential 类型对服务进行身份验证。 | 是 | https://mysignalrsevice1.service.signalr.net |
终结点类型 | Azure__SignalR__Endpoints__{endpointName}__type |
指示服务终结点是主要终结点还是辅助终结点。 如果未指定,则默认为 Primary 。 有效值为 Primary 和 Secondary ,不区分大小写。 |
否 | Secondary |
令牌凭据 | Azure__SignalR__Endpoints__{endpointName}__credential |
定义如何为连接获取令牌。 如果部署的 Azure 函数打算使用托管标识身份验证,则此设置应设置为 managedidentity 。 仅当托管标识在托管环境中可用时,此值才有效。 |
否 | managedidentity |
客户端 ID | Azure__SignalR__Endpoints__{endpointName}__clientId |
当 credential 设置为 managedidentity 时,此属性可以设为指定在获取令牌时要使用的用户分配的标识。 该属性接受与分配给应用程序的用户分配的标识对应的客户端 ID。 同时指定资源 ID 和客户端 ID 是无效的。 如果未指定,则使用系统分配的标识。 在本地开发方案中使用时,此属性的使用方式不同,且不应设置 credential 。 |
否 | 00000000-0000-0000-0000-000000000000 |
资源 ID | Azure__SignalR__Endpoints__{endpointName}__managedIdentityResourceId |
当 credential 设置为 managedidentity 时,此属性可以设为指定在获取令牌时要使用的资源标识符。 该属性接受与用户定义的托管标识的资源 ID 对应的资源标识符。 同时指定资源 ID 和客户端 ID 是无效的。 如果两者都没有指定,则会使用系统分配的标识。 在本地开发方案中使用时,此属性的使用方式不同,且不应设置 credential 。 |
否 | /subscriptions/0000000-0000-0000-0000-000000000000/resourceGroups/myrg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myusermanagedidentity |
有关多个终结点的详细信息,请参阅使用多个实例缩放SignalR 服务
后续步骤
若要详细了解如何配置 SignalR 服务并将其与 Azure Functions 一起使用,请参阅通过 Azure SignalR 服务进行的 Azure Functions 开发和配置。