Sobes.tech
Senior

¿Cómo funciona la conexión WebSocket en la arquitectura, en qué momento se establece y quién se comunica con quién?

sobes.tech AI

Respuesta de la IA

La conexión WebSocket se establece mediante un apretón de manos especial sobre el protocolo HTTP:

  1. El cliente envía una solicitud HTTP con el encabezado Upgrade: websocket para cambiar al protocolo WebSocket.
  2. El servidor, que soporta WebSocket, responde con una confirmación y cambia a una conexión bidireccional.

Después de la instalación:

  • El cliente y el servidor mantienen una conexión TCP persistente.
  • Ambas partes pueden enviar mensajes en cualquier momento sin necesidad de volver a establecer la conexión.

En la arquitectura, esto permite implementar comunicación en tiempo real, por ejemplo, chat o actualización de datos en tiempo real.

Ejemplo en Go usando el paquete 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("error de actualización:", err)
        return
    }
    defer conn.Close()

    for {
        _, msg, err := conn.ReadMessage()
        if err != nil {
            break
        }
        // Procesamiento del mensaje
        conn.WriteMessage(websocket.TextMessage, msg) // eco
    }
}

De esta forma, WebSocket proporciona una conexión bidireccional y persistente entre cliente y servidor.