WebSocket
Una conexión entre navegador y servidor que queda abierta, para que hablen cuando quieran.
El HTTP común funciona como un intercambio de cartas: el navegador pregunta, el servidor responde y la conversación termina. El servidor no puede hablar primero. Un WebSocket es una conexión que queda abierta después de crearse, así cualquiera de los dos lados puede mandar un mensaje en cualquier momento, en los dos sentidos, sin volver a preguntar.
Arranca como un pedido HTTP normal con un encabezado especial que dice, más o menos, 'pasemos a WebSocket' (el upgrade handshake). Si el servidor acepta, se conserva la misma conexión TCP y desde ahí viajan mensajes chiquitos, llamados frames, en vez de pedidos y respuestas completos. En el navegador son unas pocas líneas: new WebSocket("wss://chat.example.com"), y después una función que se ejecuta cada vez que llega un mensaje. El prefijo wss:// quiere decir que va cifrado, como HTTPS.
Es lo que hace que las apps web en tiempo real se sientan instantáneas: chats, resultados deportivos en vivo, documentos compartidos donde ves a otros escribir, pantallas de trading, juegos multijugador en el navegador. La alternativa vieja era el polling: preguntarle al servidor '¿hay algo nuevo?' cada pocos segundos, que es más lento y desperdicia pedidos cuando la respuesta es no. El costo es que el servidor tiene que mantener una conexión abierta por usuario, lo que ocupa memoria y pide cuidado al escalar, y las conexiones se cortan en redes malas, así que las apps tienen que reconectarse.
Para quedarse
- Una sola conexión queda abierta y lleva mensajes en los dos sentidos.
- Empieza como un pedido HTTP que se convierte;
wss://es la versión cifrada. - Reemplaza al polling en chats, datos en vivo, colaboración y juegos.
- El servidor mantiene una conexión por usuario y el cliente tiene que saber reconectarse.