Usar WebSockets com distribuições do CloudFront - Amazon CloudFront

Usar WebSockets com distribuições do CloudFront

O Amazon CloudFront oferece suporte ao uso de WebSocket, um protocolo baseado em TCP que é útil quando forem necessárias conexões bidirecionais de longa duração entre clientes e servidores. Uma conexão persistente normalmente é um requisito com aplicativos em tempo real. Os cenários nos quais convém usar Websockets incluem plataformas de bate-papo sociais, espaços de trabalho de colaboração online, jogos multijogador e serviços que fornecem dados em tempo real, como feeds de plataformas de transações financeiras. Os dados sobre uma conexão WebSocket pode fluir em ambas as direções para comunicação full-duplex.

A funcionalidade WebSocket é habilitada automaticamente para que funcione com qualquer distribuição. Para usar o WebSockets, configure uma das seguintes opções no comportamento do cache anexado à sua distribuição:

Como o protocolo WebSocket funciona

O protocolo WebSocket é um protocolo independente baseado em TCP que permite que você evite parte da sobrecarga, e possivelmente maior latência, de HTTP.

Para estabelecer uma conexão WebSocket, o cliente envia uma solicitação HTTP normal que usa semântica de atualização do HTTP para alterar o protocolo. O servidor pode concluir o handshake. A conexão WebSocket permanece aberta, e o cliente ou servidor pode enviar dados quadros entre si sem a necessidade de estabelecer novas conexões a cada vez.

Por padrão, o protocolo WebSocket usa a porta 80 para conexões WebSocket regulares e a porta 443 para conexões WebSocket sobre TLS/SSL. As opções Política de protocolo do visualizador e Protocolo (somente origens personalizadas) que você escolher para o CloudFront se aplicam a conexões WebSocket, bem como ao tráfego HTTP.

Requisitos de WebSocket

Solicitações WebSocket devem estar em conformidade com a RFC 6455 nos formatos padrão a seguir.

Exemplo de solicitação do 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

Exemplo de resposta de servidor:

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

Se a conexão WebSocket for desconectada pelo cliente, servidor ou interrupção da rede, os aplicativos cliente deverão reiniciar a conexão com o servidor.

Cabeçalhos WebSocket recomendados

Para evitar problemas inesperados relacionados a compressão ao usar o WebSockets, recomendamos que você inclua os seguintes cabeçalhos em uma política de solicitação de origem:

  • Sec-WebSocket-Key

  • Sec-WebSocket-Version

  • Sec-WebSocket-Protocol

  • Sec-WebSocket-Accept

  • Sec-WebSocket-Extensions