¿QUÉ ES WEBSOCKET Y CÓMO FUNCIONA? GUÍA COMPLETA

Es un protocolo que permite comunicación bidireccional en tiempo real entre cliente y servidor. Una vez establecida la conexión, ambos pueden enviarse datos continuamente sin necesidad de múltiples requests como en HTTP. Mantiene la conexión abierta que es ideal para aplicaciones en tiempo real.

HTTP vs WebSocket

  • HTTP:
    • Request → Response.
    • Conexión corta.
    • Necesita recargar o hacer polling constantemente.
    • Cliente siempre pregunta: “¿Hay datos?”.
  • WebSocket:
    • Comunicación bidireccional.
    • Conexión persistente.
    • Datos en tiempo real.
    • Cliente Servidor (tiempo real).

Flujo de WebSocket

  1. El cliente inicia con un Handshake HTTP.
  2. El servidor acepta y cambia el protocolo a WebSocket.
  3. La conexión queda abierta y ambos pueden enviarse mensajes instantáneamente.
Ejemplo: Usuario A → envía mensaje → Servidor → Usuario B (en milisegundos).

Problemas cuando solo se usa HTTP

  • Tienes que preguntar constantemente (polling).
  • Genera mucho tráfico innecesario.
  • Alto consumo de recursos.
  • Mayor latencia.
  • Experiencia repetitiva y lenta para el usuario.

Ventajas de WebSocket

  • Tiempo real real sin delay.
  • Menos tráfico que el polling.
  • Comunicación continua.
  • Baja latencia.
  • Experiencia en vivo mucho más fluida.

Arquitectura típica

  • Servidor WebSocket: maneja múltiples conexiones.
  • Se integra fácilmente con Redis (para Pub/Sub y escalabilidad horizontal).
  • Cliente → Servidor WebSocketRedis/DB → Otros clientes.

Ejemplo básico en JavaScript

const socket = new WebSocket('ws://localhost:8080');

socket.onopen = () => console.log('✅ Conexión WebSocket abierta');
socket.onmessage = (event) => console.log('Mensaje recibido:', event.data);

socket.send('Hola servidor!');