
WebSockets superam SSE para streaming de IA em interfaces agênticas
Por que SSE não dá conta do streaming de IA
O argumento central é estrutural: Server-Sent Events (SSE) são especificados como um canal de mão única, do servidor para o cliente. Quando um agente de IA precisa receber algo do usuário no meio da resposta - cancelar uma geração, aprovar uma chamada de ferramenta, redirecionar o agente - o SSE não oferece canal para isso, e cada sinal exige uma requisição HTTP separada. O exemplo dado é um agente de suporte prestes a processar um reembolso: a aprovação do usuário não tem como chegar ao agente pela conexão SSE.
WebSockets resolvem três problemas que o SSE não resolve: um canal bidirecional permanente, no qual cliente e servidor podem falar a qualquer momento; menor custo por mensagem, com overhead de cerca de dois a seis bytes por quadro contra cabeçalhos HTTP repetidos em cada chunk do SSE, o que se torna custo mensurável em alto volume de tokens; e suporte nativo a quadros binários e ordenação garantida em uma única conexão, enquanto o SSE só carrega texto UTF-8 (binário precisa de base64) e exige reconciliação manual de ordem entre ciclos de requisição e resposta.
O limite vem da especificação, não de um produto
A limitação de mão única é do SSE em si, e aparece onde ele for o transporte: o transporte padrão do Vercel AI SDK (DefaultChatTransport) esbarra no problema, o que motivou a interface ChatTransport plugável no AI SDK 5; o padrão StreamingResponse do FastAPI e os callbacks de streaming do LangChain herdam o mesmo modelo. O texto reconhece, porém, que SSE continua adequado para assistentes de turno único, sem cancelamento, escalonamento ou multi-dispositivo.
O que os WebSockets não resolvem
Escolher WebSockets não encerra a decisão. Três lacunas permanecem: reconexão (detectar queda, retry com backoff e ressincronizar estado), fan-out (distribuir mensagens entre servidores e dispositivos) e garantias de entrega (exactly-once e ordenação entre canais). Em WebSockets brutos, tudo isso é código próprio. Em software self-hosted como Centrifugo e Socket.IO, reconexão e fan-out vêm embutidos, mas a equipe ainda roda e atualiza o broker e o cluster; Centrifugo exige Redis ou NATS e teve vários releases e avisos de segurança em 2026; Socket.IO suporta cerca de 10 mil a 30 mil conexões concorrentes por nó, e o estado em memória se perde ao reiniciar. Nenhum dos dois oferece garantias de entrega.
Custo de construir versus comprar
Dados do relatório da Ably estimam a construção própria em 7 engenheiros e 6 meses (cerca de US$ 525 mil de desenvolvimento e US$ 318 mil anuais de operação) contra 2 engenheiros e 1 mês (US$ 25 mil de integração e US$ 30 mil anuais) em carga comparável de aproximadamente 33 mil conexões e 1,5 bilhão de mensagens mensais. Uma pesquisa da Ably com 500 tomadores de decisão aponta risco além do custo: 65% dos times que construíram infraestrutura própria tiveram interrupção significativa em 12 a 18 meses, 46% viram custos escalar e 41% perderam prazos, e 56% acabaram realocando engenheiros de volta ao produto.
Plataforma gerenciada e o caso da Ably
O artigo defende que uma plataforma gerenciada transfere reconexão, fan-out, garantias de entrega, patching e on-call para um contrato. A Ably descreve seus "Quatro Pilares de Confiabilidade": 6,5 ms de latência mediana de ida e volta, ordenação e exactly-once garantidos, failover regional automático e SLA de 99,999% de uptime no plano Enterprise. O Ably AI Transport mantém o estado da sessão na infraestrutura, permitindo retomar a sessão após queda e continuidade entre dispositivos. HubSpot (chat para mais de 268 mil empresas) e Fin (que abandonou seu sistema interno Nexus) são citados como casos em que construir deixou de valer o custo de engenharia.
Camadas de sessão dos labs não resolvem a última milha
Os Agents da OpenAI e os Managed Agents da Anthropic gerenciam a execução do modelo no lado do laboratório, não a entrega ao usuário. As documentações dizem explicitamente que os streams não fazem replay de eventos perdidos: após desconexão, o cliente precisa buscar o histórico e deduplicar por ID de evento (Anthropic) ou recuperar a sessão e seus itens salvos (OpenAI). Terceirizar a execução do agente não terceiriza a camada de entrega.
Quando construir ainda faz sentido
WebSockets brutos cabem em implantações de servidor único sem multi-dispositivo. Self-hosting se justifica quando infraestrutura e on-call já existem internamente, regras de residência de dados excluem plataformas de terceiros ou a escala é pequena. O texto também nota que WebTransport (HTTP/3 e QUIC) ainda não substitui WebSockets na prática. A conclusão: WebSockets vencem o SSE por mérito técnico, mas a decisão operacional - manter reconexão, fan-out e garantias de entrega ou terceirizar para uma plataforma - continua em aberto para cada equipe.