WebSocket

WebSocket es un protocolo de comunicaciones para una conexión TCP de dúplex completo bidireccional persistente desde el navegador web de un usuario a un servidor.

Una conexión WebSocket se inicia enviando una solicitud de protocolo de enlace WebSocket desde la conexión HTTP de un navegador a un servidor para actualizar la conexión. Junto con el encabezado de la solicitud de actualización, la solicitud de protocolo de enlace incluye un encabezado Sec-WebSocket-Key de 64 bits. El servidor responde con un hash de la clave en un encabezado Sec-Websocket-Auth. Este intercambio de encabezado evita que un proxy de almacenamiento en caché reenvíe intercambios anteriores de WebSocket.

Desde ese punto, la conexión es binaria y no se ajusta al protocolo HTTP. Una aplicación de servidor conoce todas las conexiones de WebSocket y puede comunicarse con cada una de forma individual. Como WebSocket permanece abierto, el servidor o el usuario pueden enviar mensajes en cualquier momento hasta que uno de ellos cierre la sesión. La comunicación se puede iniciar en cualquier extremo, lo que hace posible la programación web basada en eventos. Por el contrario, HTTP estándar permite que solo los usuarios soliciten nuevos datos.

WebSocket se vio por primera vez en las especificaciones HTML5 como TCPConnection, un marcador de posición para una API de socket basada en TCP. El protocolo fue desarrollado por Ian Hickson y Michael Carter y estandarizado por IETF en RFC 6455 en 2011. WebSocket es compatible con casi todos los principales navegadores web, incluidos Firefox, Chrome, Opera, Edge e Internet Explorer.