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 se conectan o desconectan.
Nota:
Los puntos de conexión ascendentes solo se pueden configurar en el 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 dependen del 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 de una en 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 tener uno de estos 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 Adición de identidad administrada 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 siguiente sintaxis 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 centro, reglas de categoría y reglas de eventos por separado. La regla coincidente admite tres formatos:
- Use un asterisco (*) para asociar 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 de SignalR, dicho desencadenador expondrá un punto de conexión único con el siguiente formato: <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
, debe habilitar primero una identidad administrada en Azure SignalR Service y, de manera opcional, 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 de Modo de servicio a Sin servidor.
- Agregue las direcciones URL en Upstream URL Pattern (Patrón de dirección URL ascendente).
- Seleccione Reglas de centro para abrir la configuración ascendente.
- Cambie las Reglas de centro, las reglas de eventos y las reglas de categoría escribiendo el valor de regla en el campo correspondiente.
- En Autenticación ascendente seleccione
- Usar identidad administrada. (Asegúrese de que ha habilitado la identidad administrada)
- Elija las opciones de 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 los valores de un punto de conexión ascendente mediante una plantilla de Azure Resource Manager, establezca la propiedad upstream
en la propiedad properties
. El siguiente fragmento de código muestra cómo establecer la propiedad upstream
para crear y actualizar la 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 solicitud
Conectado
Content-Type: application/json
Escenario desconectado
Content-Type: application/json
Nombre | Escribir | Descripción |
---|---|---|
Error | string | 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 | Escribir | Descripción |
---|---|---|
InvocationId | string | Una cadena opcional que representa un mensaje de invocación. Obtenga más detalles en Invocaciones. |
Destino | string | 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 . |
Signature
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 encabezado X-ASRS-Signature
al realizar solicitudes HTTP a un punto de conexión ascendente:
Hex_encoded(HMAC_SHA256(accessKey, connection-id))