Puntos de conexión ascendentes
La característica de puntos de conexión ascendentes permite a Azure SignalR Service enviar mensajes y eventos de conexión a un conjunto de puntos de conexión en modo sin servidor. Puede usar puntos de conexión ascendentes para invocar un método concentrador desde clientes en modo sin servidor para notificar a los puntos de conexión cuando las conexiones de cliente están conectadas o desconectadas.
Nota:
Los puntos de conexión ascendentes solo se pueden configurar en modo sin servidor.
Configuración del punto de conexión ascendente
La configuración de un punto de conexión ascendente consta de una lista de elementos que distinguen el orden:
- Una plantilla de dirección URL, que especifica a dónde se envían los mensajes.
- Un conjunto de reglas.
- Configuraciones de autenticación.
Cuando se desencadena un evento, las reglas de un elemento se comprueban una por una en orden. Los mensajes se enviarán a la primera dirección URL del punto de conexión ascendente del elemento coincidente.
Configuración de plantillas de dirección URL
Puede parametrizar la dirección URL del punto de conexión ascendente para admitir varios patrones. Hay tres parámetros predefinidos:
Parámetro predefinido | Descripción |
---|---|
{centro} | Un centro es un concepto de Azure SignalR Service. Un centro es una unidad de aislamiento. El ámbito de los usuarios y de la entrega de mensajes está restringido a un centro. |
{categoría} | Una categoría puede ser uno de los siguientes valores:
|
{evento} | En la categoría messages, un evento es el destino en el mensaje de invocación que envían los clientes. En la categoría connections, solo se usan connected y disconnected. |
Estos parámetros predefinidos se pueden usar en el patrón de dirección URL. Los parámetros se reemplazarán por un valor especificado al evaluar la dirección URL del punto de conexión ascendente. Por ejemplo:
http://host.com/{hub}/api/{category}/{event}
Cuando se conecte una conexión de cliente en el centro "chat", se enviará un mensaje a esta dirección URL:
http://host.com/chat/api/connections/connected
Cuando un cliente del centro "chat" invoque el método de centro de conectividad broadcast
, se enviará un mensaje a esta dirección URL:
http://host.com/chat/api/messages/broadcast
Referencia de secreto de Key Vault en la configuración de la plantilla de dirección URL
La dirección URL del punto de conexión ascendente no está cifrada. Puede proteger los puntos de conexión ascendentes confidenciales mediante Key Vault y acceder a ellos con una identidad administrada.
Para habilitar la identidad administrada en la instancia de SignalR Service y concederle acceso a Key Vault:
Agregue una identidad asignada por el sistema o una asignada por el usuario. Consulte Incorporación de identidades administradas en Azure Portal.
Conceda el permiso de lectura de secreto para la identidad administrada en las directivas de acceso de Key Vault. Consulte Asignación de una directiva de acceso de Key Vault mediante Azure Portal
Reemplace el texto confidencial por la sintaxis siguiente en el patrón de dirección URL del punto de conexión ascendente:
{@Microsoft.KeyVault(SecretUri=<secret-identity>)}
<secret-identity>
es el URI completo del plano de datos de un secreto en Key Vault y, opcionalmente, puede incluir una versión; por ejemplo, https://myvault.vault.azure.net/secrets/mysecret/ o https://myvault.vault.azure.net/secrets/mysecret/ec96f02080254f109c51a1f14cdb1931.Por ejemplo, una referencia completa se parecería a la siguiente:
{@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/)}
Una dirección URL del punto de conexión ascendente a La función de Azure tendría el siguiente aspecto:
https://contoso.azurewebsites.net/runtime/webhooks/signalr?code={@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/)}
Nota:
Cada 30 minutos, o cada vez que cambie la configuración del punto de conexión ascendente o la identidad administrada, el servicio vuelve a leer el contenido del secreto. Puede desencadenar inmediatamente una actualización cambiando la configuración del punto de conexión ascendente.
Configuración de reglas
Puede establecer reglas de concentrador, reglas de categoría y reglas de eventos por separado. La regla de coincidencia admite tres formatos:
- Use un asterisco (*) para que coincida con cualquier evento.
- Use una coma (,) para combinar varios eventos. Por ejemplo,
connected, disconnected
asocia los eventos conectados y desconectados. - Use el nombre de evento completo para que se asocie con el evento. Por ejemplo,
connected
asocia el evento conectado.
Nota:
Si usa Azure Functions con el desencadenador SignalR, el desencadenador de SignalR expondrá un único punto de conexión con el formato siguiente: <Function_App_URL>/runtime/webhooks/signalr?code=<API_KEY>
.
Solo puede establecer la configuración de la plantilla de dirección URL en esta dirección URL y mantener la Configuración de la regla como opción predeterminada. Consulte Integración de SignalR Service para obtener más información sobre cómo buscar <Function_App_URL>
y <API_KEY>
.
Configuración de autenticación
Puede configurar la autenticación para cada configuración de punto de conexión ascendente por separado. Al configurar la autenticación, se establece un token en el encabezado Authentication
del mensaje ascendente. Actualmente, Azure SignalR Service admite los siguientes tipos de autenticación:
None
ManagedIdentity
Al seleccionar ManagedIdentity
, primero debe habilitar una identidad administrada en Azure SignalR Service y, opcionalmente, especificar un recurso. Para obtener más información, consulte Identidades administradas para Azure SignalR Service.
Configuración del punto de conexión ascendente mediante Azure Portal
Nota:
La integración con App Service Environment no se admite actualmente.
- Vaya a Azure SignalR Service.
- Haga clic en Configuración.
- Cambie el modo de servicio a Sin servidor.
- Agregue las direcciones URL en Upstream URL Pattern (Patrón de dirección URL ascendente).
- Seleccione Reglas del concentrador para abrir la Configuración ascendente.
- Para cambiar las reglas del centro de conectividad, las reglas de eventos y las reglas de categoría, escriba el valor de regla en el campo correspondiente.
- En Autenticación ascendente, seleccione
- Use identidad administrada. (Asegúrese de que ha habilitado la identidad administrada)
- Elija las opciones en Audiencia en el token emitido. Para obtener más información, consulte Identidades administradas para Azure SignalR Service.
Configuración del punto de conexión ascendente mediante la plantilla de Resource Manager
Para configurar la configuración del punto de conexión ascendente mediante una plantilla de Azure Resource Manager, establezca la upstream
propiedad en la properties
propiedad . En el fragmento de código siguiente se muestra cómo establecer la propiedad para crear y actualizar la upstream
configuración del punto de conexión ascendente.
{
"properties": {
"upstream": {
"templates": [
{
"UrlTemplate": "http://host.com/{hub}/api/{category}/{event}",
"EventPattern": "*",
"HubPattern": "*",
"CategoryPattern": "*",
"Auth": {
"Type": "ManagedIdentity",
"ManagedIdentity": {
"Resource": "<resource>"
}
}
}
]
}
}
}
Protocolos sin servidor
Azure SignalR Service envía mensajes a los puntos de conexión que cumplen con los protocolos siguientes. Puede usar el enlace del desencadenador de SignalR Service con la aplicación de funciones, que controla estos protocolos.
Método
PUBLICAR
Encabezado de solicitud
Nombre | Descripción |
---|---|
X-ASRS-Connection-Id | Identificador de conexión para la conexión del cliente. |
X-ASRS-Hub | El centro al que pertenece la conexión del cliente. |
X-ASRS-Category | Categoría a la que pertenece el mensaje. |
X-ASRS-Event | Evento al que pertenece el mensaje. |
X-ASRS-Signature | Código de autenticación de mensajes basado en hash (HMAC) que se utiliza para la validación. Consulte Firma para obtener más información. |
X-ASRS-User-Claims | Un grupo de notificaciones de la conexión del cliente. |
X-ASRS-User-Id | Identidad de usuario del cliente que envía el mensaje. |
X-ASRS-Client-Query | La consulta de la solicitud cuando los clientes se conectan al servicio. |
Autenticación | Un token opcional cuando se usa ManagedIdentity . |
Cuerpo de la solicitud
Conectado
Content-Type: application/json
Desconectado
Content-Type: application/json
Nombre | Tipo | Descripción |
---|---|---|
Error | cadena | Mensaje de error de una conexión cerrada. Está vacío cuando las conexiones se cierran sin errores. |
Mensaje de invocación
Content-Type: application/json
o application/x-msgpack
Nombre | Tipo | Descripción |
---|---|---|
InvocationId | cadena | Una cadena opcional que representa un mensaje de invocación. Obtenga más detalles en Invocaciones. |
Destino | cadena | El mismo que el evento y el mismo que el destino en un mensaje de invocación. |
Argumentos | Matriz de objetos | Una matriz que contiene los argumentos que se van a aplicar al método al que se hace referencia en Target . |
Firma
El servicio calculará el código SHA256 para el valor X-ASRS-Connection-Id
mediante la clave de acceso principal y la clave de acceso secundaria como clave HMAC
. El servicio lo establecerá en el X-ASRS-Signature
encabezado al realizar solicitudes HTTP a un punto de conexión ascendente:
Hex_encoded(HMAC_SHA256(accessKey, connection-id))