Skip to content
Latchkey

O Que É um WebSocket? Conexões Persistentes de Mão Dupla

Um WebSocket é uma conexão de longa duração que permanece aberta após um handshake HTTP, permitindo que cliente e servidor enviem mensagens um ao outro a qualquer momento.

O HTTP puro é requisição-resposta: o cliente pergunta e o servidor responde. Os WebSockets quebram esse padrão fazendo o upgrade de uma conexão para que ambos os lados possam enviar mensagens sempre que quiserem. Logs de build ao vivo, streams de progresso de deploy e dashboards que atualizam sem recarregar frequentemente usam WebSockets.

O handshake de upgrade

Um WebSocket começa como uma requisição HTTP com um header Upgrade. Se o servidor concorda, a conexão troca de protocolo e permanece aberta como um canal bidirecional em vez de fechar após uma resposta.

Mensagens full-duplex

Uma vez aberto, qualquer lado pode enviar mensagens de forma independente, sem necessidade de polling. Isso é ideal para dados em tempo real em que o servidor tem atualizações para enviar.

Onde aparece em CI/CD

  • Streaming ao vivo de logs de build e deploy para uma UI.
  • Status de job em tempo real em um dashboard.
  • Consoles interativos anexados a um container em execução.

As conexões caem

Conexões de longa duração são inerentemente frágeis: um timeout de proxy, uma instabilidade de rede ou um período ocioso podem cortá-las. Clientes robustos reconectam automaticamente e retomam de onde pararam.

Proxies e load balancers

Nem todo proxy ou load balancer encaminha upgrades de WebSocket por padrão. Um deploy que coloca um novo proxy na frente de um serviço pode quebrar silenciosamente o tráfego de WebSocket mesmo que o HTTP comum ainda funcione.

Quedas transitórias em pipelines

Um stream de logs derrubado durante um deploy longo é uma instabilidade transitória, não uma falha de build. Na Latchkey, o streaming no lado do runner reconecta através de interrupções breves de rede, para que uma queda momentânea não corte seus logs nem falhe o job.

Principais conclusões

  • Um WebSocket faz o upgrade de uma conexão HTTP para um canal persistente de mão dupla.
  • Ele viabiliza recursos em tempo real como streaming de logs ao vivo e dashboards de status.
  • As conexões caem em instabilidades e timeouts de proxy, então os clientes devem reconectar.

Guias relacionados