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:
- O cliente envia uma requisição HTTP com o cabeçalho
Upgrade: websocketpara mudar para o protocolo WebSocket. - 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.