Importación de WebSocket API

SE APLICA A: Desarrollador | Básico | Básico v2 | Estándar | Estándar v2 | Premium

Con la solución de API WebSocket de API Management, los publicadores de API pueden agregar rápidamente una API de WebSocket en API Management a través de Azure Portal, la CLI de Azure, Azure PowerShell y otras herramientas de Azure.

Puede proteger las API de WebSocket aplicando las directivas de control de acceso existentes, como la validación de JWT. También puede probar las API de WebSocket mediante las consolas de prueba de las API en Azure Portal y el portal para desarrolladores. A través de las funcionalidades de observabilidad existentes, API Management proporciona métricas y registros para supervisar y solucionar problemas de las API de WebSocket.

En este artículo:

  • Comprenderá el flujo de tráfico de Websocket.
  • Agregará una API de WebSocket a la instancia de API Management.
  • Probará la API de WebSocket.
  • Visualizará las métricas y los registros de la API de WebSocket.
  • Conocerá las limitaciones de la API de WebSocket.

Requisitos previos

Tráfico de WebSocket

API Management admite el tráfico de WebSocket.

Ilustración visual del flujo de tráfico de WebSocket

Durante el tráfico de WebSocket, la aplicación cliente establece una conexión de WebSocket con la puerta de enlace de API Management, que a su vez establece una conexión con los servicios back-end correspondientes. A continuación, API Management envía mediante proxy los mensajes entre cliente y servidor de WebSocket.

  1. La aplicación cliente envía una solicitud de protocolo de enlace WebSocket a la puerta de enlace de APIM al invocar la operación onHandshake.
  2. La puerta de enlace de APIM envía una solicitud de protocolo de enlace WebSocket al servicio back-end correspondiente.
  3. El servicio back-end actualiza una conexión a WebSocket.
  4. La puerta de enlace de APIM actualiza la conexión correspondiente a WebSocket.
  5. Una vez establecido el par de conexión, APIM gestionará los mensajes entre la aplicación cliente y el servicio back-end.
  6. La aplicación cliente envía un mensaje a la puerta de enlace de APIM.
  7. La puerta de enlace de APIM reenvía el mensaje al servicio back-end.
  8. El servicio back-end envía un mensaje a la puerta de enlace de APIM.
  9. La puerta de enlace de APIM reenvía el mensaje a la aplicación cliente.
  10. Cuando cualquiera de los lados se desconecta, APIM termina la conexión correspondiente.

Nota

Las conexiones del cliente y del back-end constan de una asignación uno a uno.

Operación onHandshake

Según el protocolo WebSocket, cuando una aplicación cliente intenta establecer una conexión WebSocket con un servicio back-end, primero enviará una solicitud de protocolo de enlace de apertura. Cada API de WebSocket en API Management tiene una operación onHandshake. La operación onHandshake es una operación del sistema inmutable, que no se puede eliminar y que se crea automáticamente. La operación onHandshake permite a los publicadores de API interceptar estas solicitudes de protocolo de enlace y aplicarles las directivas de API Management.

Ejemplo de pantalla de onHandshake

Adición de una API de WebSocket

    1. Vaya a la instancia de API Management en Azure Portal.
  1. En el menú izquierdo, seleccione API>+Agregar API.

  2. En Definir una nueva API, seleccione WebSocket.

  3. En el cuadro de diálogo, seleccione Completo y rellene los campos necesarios del formulario.

    Campo Description
    Nombre para mostrar Nombre con el que se mostrará la API de WebSocket.
    Nombre Nombre sin procesar de la API de WebSocket. Se rellena automáticamente a medida que escribe el nombre para mostrar.
    URL de WebSocket Dirección URL base con el nombre de WebSocket. Por ejemplo: ws://example.com/nombre_del_socket
    Esquema URL Acepte el valor predeterminado.
    Sufijo de dirección URL de API Agregue un sufijo de URL para identificar esta API específica en esta instancia de API Management. Debe ser exclusivo en esta instancia de APIM.
    Productos Asocie la API de WebSocket a un producto para publicarla.
    Puertas de enlace Asocie la API de WebSocket a las puertas de enlace existentes.
  4. Haga clic en Crear.

Prueba de la API de WebSocket

  1. Navegue hasta la API de WebSocket.

  2. En la API de WebSocket, seleccione la operación onHandshake.

  3. Seleccione la pestaña Prueba para acceder a la consola Prueba.

  4. Opcionalmente, proporcione los parámetros de cadena de consulta necesarios para el protocolo de enlace WebSocket.

    Ejemplo de API de prueba

  5. Haga clic en Conectar.

  6. Vea el estado de la conexión en Salida.

  7. Escriba el valor en Carga.

  8. Haga clic en Enviar.

  9. Vea los mensajes recibidos en Salida.

  10. Repita los pasos anteriores para probar diferentes cargas.

  11. Cuando se complete la prueba, seleccione Desconectar.

Visualización de métricas y registros

Use características estándar de API Management y Azure Monitor para supervisar las API de WebSocket:

  • Visualización de métricas de API en Azure Monitor
  • Opcionalmente, habilite la configuración de diagnóstico para recopilar y ver los registros de puerta de enlace de API Management, que incluyen operaciones de API de WebSocket.

Por ejemplo, en la siguiente captura de pantalla se muestran las respuestas recientes de la API de WebSocket con código 101 de la tabla 101. Estos resultados indican el cambio correcto de las solicitudes de TCP al protocolo WebSocket.

Consulta de registros para solicitudes de API de WebSocket

Limitaciones

A continuación se muestran las restricciones actuales de compatibilidad con WebSocket en API Management:

  • Las API de WebSocket no se admiten aún en el nivel de consumo.
  • Las API WebSocket admiten los siguientes tipos de búferes válidos para mensajes: Close, BinaryFragment, BinaryMessage, UTF8Fragment y UTF8Message.
  • Actualmente, la directiva de establecimiento de encabezado no admite el cambio de ciertos encabezados conocidos, incluidos los encabezados Host, en las solicitudes onHandshake.
  • Durante el handshake TLS con un backend WebSocket, la API Management valida que el certificado del servidor sea de confianza y que su nombre de sujeto coincida con el nombre del host. Con las API de HTTP, API Management valida que el certificado es de confianza, pero no valida que el nombre de host y el asunto coincidan.

Para conocer los límites de conexión de WebSocket, consulte límites de API Management.

Directivas no admitidas

Las siguientes directivas no son compatibles con la operación onHandshake y no se pueden aplicar a ella:

  • Similar respuesta
  • Obtención desde memoria caché
  • Almacenar en caché
  • Permitir llamadas entre dominios
  • CORS
  • JSONP
  • Establecimiento de método de solicitud
  • Establecer cuerpo
  • Convertir XML a JSON
  • Convertir JSON a XML
  • Transformar XML mediante XSLT
  • Validar contenido
  • Validación de parámetros
  • Validación de encabezados
  • Validación de código de estado

Nota

Si aplicó las directivas en ámbitos superiores (es decir, a nivel global o de producto) y una API WebSocket las heredó mediante la directiva, se omitirán en tiempo de ejecución.

Pasos siguientes