Uso de WebSockets con distribuciones de CloudFront - Amazon CloudFront

Uso de WebSockets con distribuciones de CloudFront

Amazon CloudFront admite el uso de WebSocket, un protocolo basado en TCP que resulta útil cuando se necesitan conexiones bidireccionales de larga duración entre clientes y servidores. Una conexión persistente suele ser un requisito con aplicaciones en tiempo real. Las situaciones en las que puede utilizar WebSockets incluyen plataformas de chat sociales, espacios de trabajo de colaboración en línea, juegos de varios jugadores, y servicios que proporcionan fuentes de distribución de datos en tiempo real como las plataformas de comercio financiero. Los datos a través de una conexión WebSocket pueden fluir en ambas direcciones para la comunicación de dúplex completo.

La funcionalidad WebSocket se habilita automáticamente para operar con cualquier distribución. Para usar WebSockets, configure una de las siguientes opciones en el comportamiento de caché que se adjunta a la distribución:

Cómo funciona el protocolo WebSocket

El protocolo WebSocket es un protocolo independiente, basado en TCP que le permite evitar cierta sobrecarga (y potencialmente mayor latencia) de HTTP.

Para establecer una conexión WebSocket regular, el cliente envía una solicitud HTTP que utiliza actualización de semántica de HTTP para cambiar el protocolo. El servidor puede completar el protocolo de enlace. La conexión WebSocket permanece abierta y el cliente o el servidor puede enviar marcos de datos entre sí sin tener que establecer nuevas conexiones cada vez.

De forma predeterminada, el protocolo WebSocket utiliza el puerto 80 para conexiones WebSocket regulares y puerto 443 para conexiones WebSocket sobre TLS/SSL. Las opciones que elija para su CloudFront Política de protocolo para lectores y Protocolo (solo orígenes personalizados) se aplican a conexiones WebSocket así como para el tráfico HTTP.

Requisitos de WebSocket

Las solicitudes de WebSocket deben cumplir con RFC 6455 en los siguientes formatos estándar.

Ejemplo de solicitud del cliente:

GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Origin: https://example.com Sec-WebSocket-Protocol: chat, superchat Sec-WebSocket-Version: 13

Ejemplo de respuesta de servidor:

HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= Sec-WebSocket-Protocol: chat

Si la conexión WebSocket la desconecta el cliente o el servidor, o mediante una interrupción de red, se espera que las aplicaciones cliente vuelvan a iniciar la conexión con el servidor.

Encabezados de WebSocket recomendados

Para evitar problemas inesperados relacionados con la compresión al utilizar WebSockets, le recomendamos que incluya los siguientes encabezados en una política de solicitudes de origen:

  • Sec-WebSocket-Key

  • Sec-WebSocket-Version

  • Sec-WebSocket-Protocol

  • Sec-WebSocket-Accept

  • Sec-WebSocket-Extensions