Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Os WebSockets, estabelecidos em RFC6455, permitem a comunicação bidirecional entre um cliente e um servidor. Ao contrário de uma solicitação HTTP ou HTTPS tradicional, os WebSockets permitem que o navegador estabeleça uma conexão e receba dados contínuos de um servidor, sem ter que puxar constantemente o servidor remoto ou precisar estabelecer várias conexões em ambas as direções (cliente para servidor e servidor para cliente).
Benefícios do WebSocket
O protocolo WebSocket tem vários benefícios em relação às solicitações HTTP tradicionais, incluindo:
- Compatibilidade do navegador: Quase todos os navegadores da Web modernos suportam WebSockets.
- Dados em tempo real: WebSockets permitem a transferência de dados em tempo real entre cliente e servidor.
- Eficiência: WebSockets eliminam a necessidade de sondar continuamente os servidores para verificar se há atualizações.
- Segurança: WebSockets podem ser criptografados usando TLS e usar portas HTTP padrão, como 80 e 443.
- Flexibilidade: WebSockets podem ser usados para uma variedade de aplicações, incluindo chat, jogos e plataformas de negociação financeira.
Como funciona o protocolo WebSocket
Para estabelecer uma conexão WebSocket, um handshake específico baseado em HTTP é trocado entre o cliente e o servidor. Se bem-sucedido, o protocolo de camada de aplicativo é "atualizado" de HTTP para WebSockets, usando a conexão TCP estabelecida anteriormente. Quando isso ocorre, o protocolo é alterado para WebSockets e o tráfego não flui mais por HTTP. Os dados são enviados ou recebidos usando o protocolo WebSocket por ambos os pontos de extremidade até que a conexão WebSocket seja fechada.
Nota
Depois que uma conexão é atualizada para WebSocket, como um proxy intermediário/terminador, o Application Gateway for Containers enviará os dados recebidos do frontend para o backend e vice-versa, sem qualquer capacidade de inspeção ou manipulação. Portanto, quaisquer manipulações como Regravações de Cabeçalho, Regravações de URL ou Substituição de Nome de Host não serão aplicadas após o estabelecimento de uma conexão WebSocket.
As conexões WebSocket podem ser em texto simples ou criptografadas por TLS. Quando uma conexão é estabelecida em texto sem formatação, a conexão é estabelecida no formato de ws://< fqdn>/path. Quando uma conexão é estabelecida por TLS, a conexão é estabelecida no formato de wss://< fqdn>/path.
Sondas de Saúde
Nenhuma configuração é necessária para aproveitar uma solicitação WebSocket no Application Gateway for Containers, no entanto, você deve garantir que configure corretamente as sondas de integridade para garantir que o back-end seja refletido como íntegro.
Por padrão, o Application Gateway for Containers tenta iniciar um handshake HTTP para a porta de back-end que executa o serviço WebSocket. Em muitos casos, isso rotula erroneamente o back-end como não íntegro, portanto, uma "HealthCheckPolicy" deve ser definida para garantir que a verificação de integridade leve em consideração o uso de uma sonda TCP.
Aqui está um exemplo de uma Política de Verificação de Saúde para um back-end WebSocket.
kubectl apply -f - <<EOF
apiVersion: alb.networking.azure.io/v1
kind: HealthCheckPolicy
metadata:
name: websockets-health-check-policy
namespace: test-infra
spec:
targetRef:
group: ""
kind: Service
name: websockets-backend
namespace: test-infra
default:
interval: 5s
timeout: 3s
healthyThreshold: 1
unhealthyThreshold: 1
http:
path: /health
EOF
Nota
Os WebSockets são suportados apenas quando se utiliza a API do Gateway para o Application Gateway for Containers.
Métricas e Monitoramento
Logs de diagnóstico:
As conexões WebSocket operam usando um protocolo distinto. Ao iniciar a conexão, o navegador recebe um código de status HTTP 101, indicando a mudança de HTTP para WebSocket e será refletido no log de acesso.
Os detalhes da conexão WebSocket são gravados somente quando a conexão é fechada. Isso permite que a duração de cada conexão seja medida com precisão.
Próximos passos
Saiba mais sobre WebSockets e API de gateway