Visión general
La arquitectura de WebSockets sigue el modelo cliente‑servidor, con diferencias clave respecto al modelo tradicional de HTTP.
En lugar de peticiones puntuales, WebSockets establece un canal persistente donde cliente y servidor pueden enviar y recibir mensajes en cualquier momento.
Upgrade: websocket
. +----------------+
| Cliente |
| (Navegador) |
+-------+--------+
|
Handshake HTTP Upgrade
|
+-------v--------+
| Servidor |
| WebSocket |
+----------------+
|
Comunicación bidireccional
|
<---------------------->
const socket = new WebSocket("ws://localhost:8080");
socket.onopen = () => {
console.log("Conexión establecida");
socket.send("Hola servidor!");
};
socket.onmessage = (event) => {
console.log("Mensaje del servidor:", event.data);
};
const WebSocket = require("ws");
const wss = new WebSocket.Server({ port: 8080 });
wss.on("connection", (ws) => {
console.log("Cliente conectado");
// Enviar mensaje al cliente
ws.send("Bienvenido al servidor WebSocket!");
// Escuchar mensajes del cliente
ws.on("message", (msg) => {
console.log("Cliente dice:", msg);
ws.send("Servidor responde: " + msg);
});
});
En sistemas reales, el modelo cliente‑servidor puede escalar con:
La arquitectura cliente‑servidor de WebSockets transforma la comunicación web en un canal continuo, bidireccional y eficiente, donde ambos lados pueden iniciar mensajes. Esto habilita aplicaciones en tiempo real, algo costoso o ineficiente de lograr con HTTP tradicional.