Pular para o conteúdo

Arquitetura de software · Comunicação · 5 min de leitura

Tempo real: polling, SSE ou WebSockets

Três formas de o servidor avisar o cliente sobre novidades — de perguntar de tempos em tempos a manter um canal aberto nos dois sentidos.

Cliente → Servidor: pergunta a cada N spergunta a cada N sServidor → Cliente: fluxo só de idafluxo só de idaCliente → Servidor: mensagens nos 2 sentidosmensagens nos 2 sentidosCliente — pollingClientepollingCliente — SSEClienteSSECliente — WebSocketClienteWebSocketServidor — responde e fechaServidorresponde e fechaServidor — envia eventosServidorenvia eventosServidor — canal abertoServidorcanal aberto

Arraste para o lado para ver o diagrama inteiro.

Quanto mais em tempo real e bidirecional, mais conexões abertas o servidor precisa sustentar.

As opções

  • Polling: o cliente pergunta a cada poucos segundos. Simples e funciona em qualquer lugar; desperdiça requisições e tem atraso.
  • Server-Sent Events (SSE): uma conexão HTTP longa por onde o servidor envia eventos. Só servidor → cliente, reconexão automática no navegador. Ótimo para notificações e para transmitir respostas de IA token a token.
  • WebSockets: canal permanente nos dois sentidos, para chat, jogos e colaboração.

Na hora de escalar

Conexões longas ocupam recursos e não combinam com servidores que reiniciam sem aviso. Use um serviço de mensagens (pub/sub) para que qualquer instância possa entregar o evento ao cliente conectado nela, e trate reconexões.

Em resumo

Referências

Continue aprendendo

Todos os temas de arquitetura de software →