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 AzureSignalRConnectionString
comú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. | Sí | 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. | Sí | 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.