Compartir a través de


Enlaces de SignalR Service para Azure Functions

En este conjunto de artículos se explica cómo autenticar y enviar mensajes en tiempo real a los clientes conectados a Azure SignalR Service mediante enlaces de SignalR Service en Azure Functions. Azure Functions Runtime, versión 2.x y posterior, admite enlaces de entrada y salida para SignalR Service.

Acción Tipo
Control de mensajes enviados desde SignalR Service Enlace del desencadenador
Devolver la dirección URL del punto de conexión de servicio y el token de acceso Enlace de entrada
Envío de mensajes de SignalR Service y administración de grupos Enlace de salida

Instalación de la extensión

El paquete NuGet de la extensión que instale depende del modo de C# que esté usando en la aplicación de funciones:

Las funciones se ejecutan en un proceso de trabajo de C# aislado. Para más información, consulte Guía para ejecutar C# Azure Functions en un proceso de trabajo aislado.

Para agregar la extensión al proyecto, instale este paquete NuGet.

Instalación del conjunto

La extensión de SignalR Service forma parte de un conjunto de extensiones, que se especifica en el archivo de proyecto host.json. Al crear un proyecto que tenga como destino la versión 3.x o posterior, ya debería tener instalada este conjunto. Para obtener más información, consulte Conjuntos de extensiones.

Adición de la dependencia

Para usar las anotaciones de SignalR Service en las funciones de Java, debe agregar una dependencia al artefacto azure-functions-java-library-signalr (versión 1.0 o superior) en el archivo pom.xml.

<dependency>
    <groupId>com.microsoft.azure.functions</groupId>
    <artifactId>azure-functions-java-library-signalr</artifactId>
    <version>1.0.0</version>
</dependency>

Conexiones

Puede usar cadena de conexión o identidad de Microsoft Entra para conectarse a Azure SignalR Service.

Cadena de conexión

Para obtener instrucciones sobre cómo recuperar el cadena de conexión de Azure SignalR Service, consulte Cadenas de conexión en Azure SignalR Service.

Este cadena de conexión debe almacenarse en una configuración de aplicación con un nombre AzureSignalRConnectionString. Puede personalizar el nombre de configuración de la aplicación con la connectionStringSetting propiedad de la configuración de enlace.

Conexiones basadas en identidades

Si usa la versión 1.7.0 o posterior, en lugar de usar un cadena de conexión con un secreto, puede hacer que la aplicación use una identidad de Microsoft Entra.

En primer lugar, debe asegurarse de que la identidad de Microsoft Entra tiene el rol SignalR Service Owner.

A continuación, definiría la configuración con un prefijo AzureSignalRConnectionStringcomún. Puede personalizar el nombre del prefijo con la connectionStringSetting propiedad de la configuración de enlace.

En este modo, la configuración incluye los siguientes elementos:

Propiedad Plantilla de variable de entorno Descripción Obligatorio Valor de ejemplo
URI de servicio AzureSignalRConnectionString__serviceUri Identificador URI del punto de conexión de servicio. Cuando solo configura "URI de servicio", las extensiones intentarían usar el tipo DefaultAzureCredential para autenticarse con el servicio. https://mysignalrsevice.service.signalr.net
Credencial de token AzureSignalRConnectionString__credential Define cómo se debe obtener un token para la conexión. Esta configuración debe establecerse en managedidentity si su función de Azure implementada pretende utilizar la autenticación de identidad administrada. Este valor sólo es válido cuando existe una identidad administrada disponible en el entorno del hospedaje. No managedidentity
Id. de cliente AzureSignalRConnectionString__clientId Cuando credential se establece en managedidentity, esta propiedad se puede establecer para especificar la identidad asignada por el usuario que se utilizará al obtener un token. La propiedad acepta un identificador de cliente correspondiente a una identidad asignada por el usuario asignada a la aplicación. No es válido especificar un id. de recurso así como tampoco es válido un id. de cliente. Si no se especifica, se usa la identidad asignada por el sistema. Esta propiedad se usa de forma diferente en escenarios de desarrollo locales, en los que no se debe establecer el elemento credential. No 00000000-0000-0000-0000-000000000000
Identificador del recurso AzureSignalRConnectionString__managedIdentityResourceId Cuando credential se establece en managedidentity, esta propiedad se puede establecer para que especifique el identificador de recurso que se utilizará al obtener un token. La propiedad acepta un identificador de recurso correspondiente al Id. de recurso de la identidad administrada definida por el usuario. No es válido especificar un Id. de recurso así como tampoco es válido un Id. de cliente. Si no se especifica ninguna de las dos, se utiliza la identidad asignada por el sistema. Esta propiedad se usa de forma diferente en escenarios de desarrollo locales, en los que no se debe establecer el elemento credential. No /subscriptions/000000000-0000-0000-0000-0000000000000/resourceGroups/mygroup/providers/Microsoft.SignalRService/SignalR/mysignalrservice

Nota:

Al usar local.settings.json el archivo en local, App de Azure Configuración o Key Vault para proporcionar la configuración de las conexiones basadas en identidades, reemplace por __ : en el nombre de configuración para asegurarse de que los nombres se resuelven correctamente.

Por ejemplo, AzureSignalRConnectionString:serviceUri.

Configuración de varios puntos de conexión

También puede configurar varios puntos de conexión y especificar la configuración de identidad por punto de conexión.

En este caso, prefijo la configuración con Azure__SignalR__Endpoints__{endpointName}. {endpointName} es un nombre arbitrario asignado por usted para asociar un grupo de configuración a un punto de conexión de servicio. El prefijo Azure__SignalR__Endpoints__{endpointName} no se puede personalizar por connectionStringSetting propiedad.

Propiedad Plantilla de variable de entorno Descripción Obligatorio Valor de ejemplo
URI de servicio Azure__SignalR__Endpoints__{endpointName}__serviceUri Identificador URI del punto de conexión de servicio. Cuando solo configura "URI de servicio", las extensiones intentarían usar el tipo DefaultAzureCredential para autenticarse con el servicio. https://mysignalrsevice1.service.signalr.net
Tipo de punto de conexión Azure__SignalR__Endpoints__{endpointName}__type Indica si el punto de conexión de servicio es principal o secundario. Si no se especifica, el valor predeterminado es Primary. Los valores válidos son Primary y Secondary, sin distinguir mayúsculas de minúsculas. No Secondary
Credencial de token Azure__SignalR__Endpoints__{endpointName}__credential Define cómo se debe obtener un token para la conexión. Esta configuración debe establecerse en managedidentity si su función de Azure implementada pretende utilizar la autenticación de identidad administrada. Este valor sólo es válido cuando existe una identidad administrada disponible en el entorno del hospedaje. No managedidentity
Id. de cliente Azure__SignalR__Endpoints__{endpointName}__clientId Cuando credential se establece en managedidentity, esta propiedad se puede establecer para especificar la identidad asignada por el usuario que se utilizará al obtener un token. La propiedad acepta un identificador de cliente correspondiente a una identidad asignada por el usuario asignada a la aplicación. No es válido especificar un id. de recurso así como tampoco es válido un id. de cliente. Si no se especifica, se usa la identidad asignada por el sistema. Esta propiedad se usa de forma diferente en escenarios de desarrollo locales, en los que no se debe establecer el elemento credential. No 00000000-0000-0000-0000-000000000000
Identificador del recurso Azure__SignalR__Endpoints__{endpointName}__managedIdentityResourceId Cuando credential se establece en managedidentity, esta propiedad se puede establecer para que especifique el identificador de recurso que se utilizará al obtener un token. La propiedad acepta un identificador de recurso correspondiente al Id. de recurso de la identidad administrada definida por el usuario. No es válido especificar un Id. de recurso así como tampoco es válido un Id. de cliente. Si no se especifica ninguna de las dos, se utiliza la identidad asignada por el sistema. Esta propiedad se usa de forma diferente en escenarios de desarrollo locales, en los que no se debe establecer el elemento credential. No /subscriptions/00000000-0000-0000-0000-0000000000000/resourceGroups/myrg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myusermanagedidentity

Para más información sobre varios puntos de conexión, consulte Scale SignalR Service with multiple instances (Escalado de SignalR Service con varias instancias).

Pasos siguientes

Para más información sobre cómo configurar y usar SignalR Service y Azure Functions juntos, consulte Desarrollo y configuración de Azure Functions con Azure SignalR Service.