Cuando HTTP no alcanza
Por qué las apps en tiempo real necesitan otro tipo de conexión
⏱ Estim. ~7 min
01 · Leer
Ya construiste un servidor que responde a peticiones. El navegador pide una página y el servidor la devuelve. Envías un formulario y el servidor lo procesa. Ese ciclo de petición-respuesta es como funciona la mayor parte de la web.
Pero ¿qué pasa si el servidor quiere hablarte a ti primero, sin que tú hayas pedido nada?
Tu oponente en ajedrez mueve una pieza. Llega un mensaje de chat. Cambia el precio de una acción. Con HTTP normal, el servidor no puede tomar la iniciativa: tiene que esperar a que tú preguntes. Eso es un problema cuando construyes cualquier cosa en tiempo real.
💡 Imagínalo asíHTTP es como mandarse cartas de ida y vuelta. Escribes una carta, la envías y esperas la respuesta. Funciona, pero cada vez hay un retraso. WebSocket es como una llamada telefónica: la conexión está abierta y cualquiera de los dos lados puede hablar cuando quiera. No hay que esperar la carta.
Puntos clave
- HTTP es petición-respuesta: el cliente siempre da el primer paso
- Con HTTP, el servidor nunca puede enviar datos al cliente por iniciativa propia
- Las funciones en tiempo real (juegos, chat, actualizaciones en vivo) necesitan otra cosa
- WebSocket resuelve esto con una conexión persistente y bidireccional
02 · Leer
Antes de que existiera WebSocket, los ingenieros hackeaban el tiempo real con una técnica llamada polling. El navegador preguntaba al servidor cada uno o dos segundos: «¿Hay novedades?». Si las había, el servidor las enviaba; si no, devolvía una respuesta vacía.
El polling técnicamente funciona. Pero desperdicia recursos. Imagina llamar a la pizzería cada 30 segundos para preguntar «¿ya está mi pedido?». Casi siempre la respuesta es no y desperdicias tu tiempo y el de ellos.
WebSocket reemplaza ese hack con una solución real: una conexión persistente donde ambos lados pueden enviar mensajes cuando quieran, sin tener que preguntar.
Puntos clave
- Polling: el cliente pregunta con un temporizador «¿hay novedades?» — desperdicia recursos
- La mayoría de las respuestas vienen vacías — desperdicio de ancho de banda y carga del servidor
- WebSocket: una conexión que se mantiene abierta, y ambos lados envían libremente
- Toda app en tiempo real importante usa WebSocket: Slack, Discord, Google Docs, juegos multijugador
03 · Paso a paso
Así se establece una conexión WebSocket: empieza como una petición HTTP normal y luego se hace un upgrade.
1. El cliente envía una petición HTTP
El navegador envía una petición HTTP normal al servidor, pero incluye un header especial: 'Upgrade: websocket'. Le está diciendo al servidor: «quiero cambiar de HTTP a WebSocket».
2. El servidor acepta el upgrade
Si el servidor soporta WebSocket, responde con el código 101 (Switching Protocols). La conexión HTTP ahora se convierte en una conexión WebSocket.
3. Se abre la conexión persistente
Ahora ambos lados pueden enviar mensajes cuando quieran. El servidor puede empujar datos al cliente sin que se lo pidan. El cliente puede enviar datos al servidor sin esperar una respuesta.
4. Los mensajes fluyen libremente
Cualquier lado envía pequeños paquetes de datos llamados 'frames'. No hay patrón de petición-respuesta: los mensajes van y vienen según se necesiten. Así es como un movimiento de ajedrez aparece al instante en la pantalla del rival.
5. Al terminar, se cierra la conexión
Cualquier lado puede cerrar la conexión cuando quiera. El navegador la cierra cuando te vas. El servidor la cierra cuando cierras sesión. Hasta entonces, se mantiene abierta.
04 · Clasificar arrastrando
Clasifica cada función: ¿usa HTTP o WebSocket?
(Esta sección es interactiva — activa JavaScript para usarla.)
05 · Quiz
¿Cuál es la ventaja principal de WebSocket frente a HTTP para un juego multijugador?
- El servidor puede empujar actualizaciones a los jugadores al instante, sin que ellos pregunten
- WebSocket es más seguro que HTTP
- WebSocket usa menos ancho de banda en la carga inicial de la página
- WebSocket no requiere un servidor
06 · Completar
A diferencia del ciclo petición-respuesta de HTTP, WebSocket establece una conexión _____ donde ambos lados pueden enviar mensajes en cualquier momento.
Otras lecciones de este capítulo
⚠ La experiencia interactiva completa necesita JavaScript. Actívalo y vuelve a cargar la página.
※ Este es un proyecto educativo independiente — no es un producto oficial de Anthropic. Claude™ es una marca registrada de Anthropic, PBC.