Sobes.tech
Senior

Como funciona a conexão WebSocket na arquitetura — em que momento ela é estabelecida e quem comunica com quem?

sobes.tech IA

Resposta da IA

A ligação WebSocket é estabelecida através de um handshake especial sobre o protocolo HTTP:

  1. O cliente envia uma requisição HTTP com o cabeçalho Upgrade: websocket para mudar para o protocolo WebSocket.
  2. O servidor, que suporta WebSocket, responde com uma confirmação e muda para uma conexão bidirecional.

Após a instalação:

  • O cliente e o servidor mantêm uma conexão TCP persistente.
  • Ambas as partes podem enviar mensagens a qualquer momento sem necessidade de restabelecer a conexão.

Na arquitetura, isso permite implementar comunicação em tempo real, por exemplo, chat ou atualização de dados em tempo real.

Exemplo em Go usando o pacote gorilla/websocket:

var upgrader = websocket.Upgrader{}

func wsHandler(w http.ResponseWriter, r *http.Request) {
    conn, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        log.Print("erro de upgrade:", err)
        return
    }
    defer conn.Close()

    for {
        _, msg, err := conn.ReadMessage()
        if err != nil {
            break
        }
        // Processamento da mensagem
        conn.WriteMessage(websocket.TextMessage, msg) // eco
    }
}

Desta forma, o WebSocket fornece uma conexão bidirecional e persistente entre cliente e servidor.