Usar WebSockets

Esta página se aplica a Apigee y Apigee Hybrid.

Consulta la documentación de Apigee Edge.

En este tema, se describe cómo usar WebSockets con Apigee y Apigee Hybrid.

Introducción

Existen muchas situaciones en las que las interacciones web deben suceder en tiempo real, como videojuegos, comunicaciones, transacciones financieras y otras actividades de alta capacidad de procesamiento.

WebSocket es un protocolo que proporciona un canal de comunicaciones dúplex completo entre un cliente web y un servidor web a través de una sola conexión TCP. El protocolo WebSocket usa el protocolo HTTP para establecer la conexión entre el cliente y el servidor. Una vez establecido, el cliente y el servidor usan el protocolo WebSocket para enviar y recibir datos.

W3C mantiene las especificaciones de WebSockets y el protocolo.

Compatibilidad con WebSockets en Apigee

En Apigee y Apigee Hybrid, los grupos de entornos proporcionan enrutamiento a los entornos y definen los nombres de host en los que se exponen los proxies de API. Los grupos de entornos admiten los protocolos HTTP y WS de forma nativa. No es necesario crear un grupo de entorno especial ni ninguna configuración especial para usar WebSockets. En cambio, depende del cliente solicitar una actualización del protocolo de HTTP a WS si incluye el encabezado de solicitud Upgrade. Una solicitud de actualización que se realiza a un extremo del proxy de API muestra una respuesta 101 Switching Protocols. Las solicitudes y respuestas adicionales se realizan bidireccionalmente en la conexión abierta de WebSockets, hasta que se cierra.

Compatibilidad de políticas

Todas las políticas funcionarán en un proxy de socket web hasta que se complete el protocolo de enlace (es decir, hasta que se devuelva la respuesta HTTP 101 al cliente). Después de eso, no se ejecutará ninguna política, pero los tokens de OAuth validados antes del protocolo de enlace se seguirán respetando y la conexión se desconectará si el token vence o se revoca.

Revoca la conexión

La conexión de WebSockets se cierra en los siguientes casos:

  • El extremo del proxy recibe una solicitud sin una clave de API o un token de OAuth.
  • El extremo del proxy recibe una solicitud con una clave de API vencida o no válida o un token de OAuth.
  • Se agota el tiempo de espera de la conexión de WebSockets.

Usa el seguimiento y las estadísticas

En la herramienta de Debug, en cada conexión de WebSockets, aparecerá una solicitud con un 101 Status, como se muestra en la siguiente captura de pantalla:

Solicitud con el estado 101 en la herramienta de depuración.

En el panel de estadísticas de Apigee, verás el tráfico contabilizado para cada sesión de WebSockets. No se muestra en el panel el tráfico de ida y vuelta que se produce durante la sesión.

Ejemplo de la aplicación de WebSockets

Para obtener más información, puedes consultar una aplicación websocket-sample en funcionamiento en GitHub. En el ejemplo se muestra cómo llamar a un proxy de API mediante una conexión de WebSockets. El proxy llama a una aplicación de destino de backend simple que se implementa en tu clúster de Kubernetes.