WebSocket Proxy
O módulo WebSocket Proxy para Applications permite que você estabeleça o protocolo de comunicação WebSocket entre sua origem e seus usuários sob a arquitetura de proxy reverso. Esse tipo de protocolo consiste em uma única conexão TCP bidirecional que permite que os dados sejam trocados em tempo real através de um único handshake sem a necessidade de reiniciar a conexão.
Os WebSockets são projetados para minimizar a latência e aumentar a eficiência, e são adequados para aplicações que trocam dados em tempo real, como jogos online, plataformas de bate-papo, notificações e serviços de transmissão ao vivo. Consulte a especificação do protocolo WebSocket para obter mais informações.
Implementação
Escopo | Recurso |
---|---|
Primeiros passos de Applications | Primeiros passos |
Functions WebSocket API | WebSocket API |
Debug Rules | Debug Rules |
Suporte WebSocket do Functions
As Azion Functions suportam WebSocket API, permitindo que sua Applications atue como um servidor ou cliente WebSocket completo e faça proxy de tráfego bidirecional para serviços de backend. Isso habilita casos de uso em tempo real, como chat, jogos multiplayer, dashboards de telemetria e fluxos de inferência de AI — tudo servido diretamente do edge para latência subsegundo.
Principais Recursos:
- Modos servidor e cliente: Use
upgradeWebSocket()
para handlers do lado servidor ou a API padrão WebSocket(url) para conexões de saída - Helpers de broadcast: Facilite o fan-out de mensagens para todos os clientes conectados com código mínimo
- Suporte ao Edge Firewall: As regras do Edge Firewall podem inspecionar o tráfego WebSocket antes do processo de upgrade ser finalizado
Requisitos
Seu cliente e servidor devem suportar a conexão WebSocket nativamente para que o protocolo seja implementado em suas applications. Do lado do cliente, a maioria dos navegadores inclui suporte nativo a WebSocket. Veja a lista completa de browsers com suporte ao WebSocket.
Cabeçalhos de upgrade
A aplicação deverá injetar os cabeçalhos HTTP Upgrade: websocket
e Connection: upgrade
na origem para que a conexão seja estabelecida com sucesso. Caso os cabeçalhos Connection
e Upgrade
sejam enviados pelo cliente com valores diferentes dos especificados acima ou um deles não esteja presente, o upgrade de conexão no request de usuários para a origem não será efetuado.
Tratamento de erros
Por padrão, uma application que tenha o módulo WebSocket Proxy habilitado irá considerar que qualquer requisição recebida com os cabeçalhos Upgrade: websocket
e Connection: upgrade
é passível de conexão websocket e irá encaminhá-los para origem. É recomendado que a própria aplicação controle o envio dos cabeçalhos nos casos onde o protocolo deverá ser usado.
A conexão WebSocket válida retornará o status 101 Switching Protocols
. Caso este não seja o status recebido, mesmo que seja da família de status de sucesso 2xx
ou 3xx
, é provável que a requisição do cliente, a application ou o servidor de origem não tenham completado a conexão Websocket. Nesse caso, você deverá revisar os requisitos para o upgrade da conexão e fazer os ajustes necessários.
Limites
Estes são os limites default:
Escopo | Limite |
---|---|
Tempo máximo de conexão¹ | 15 minutos |
¹ A Azion recicla conexões keepalive nos seus servidores aproximadamente a cada 15 minutos. Portanto, conexões WebSocket ativas poderão ser encerradas se ultrapassarem esse intervalo. Neste caso, sua aplicação deverá tratar esses cenários e restabelecer a conexão sempre que necessário.