WebSocket es uno de los protocolos de comunicación utilizados en Internet. Permite la comunicación bidireccional entre servidores web y clientes. El protocolo está definido por el Grupo de trabajo de ingeniería de Internet (IETF) como "RFC 6455".
La web fue diseñada inicialmente para soportar hipertexto, pero desde entonces ha evolucionado para permitir aplicações web más dinámicas. Una técnica comúnmente adoptada para lograr esto es AJAX (JavaScript y XML asíncrono), que utiliza XMLHttpRequest para facilitar intercambios de datos granulares con servidores web en lugar de actualizaciones a nivel de página. Esto permite una experiencia de usuario más receptiva. Sin embargo, con AJAX, todos los intercambios de datos deben originarse desde el lado del cliente, lo que dificulta que el servidor web envíe datos a los clientes de forma proactiva.
Para solucionar esta limitación, Comet se desarrolló como una extensión de AJAX. Comet funciona creando solicitudes con respuestas retardadas, manteniendo abierta la conexión HTTP con el servidor web para que este pueda enviar respuestas cuando desee enviar información. Sin embargo, Comet tiene un alto problema de consumo de recursos.
WebSocket se desarrolló como una mejora de Comet y está disponible en HTML5. Mantiene abierta una conexión entre el servidor y el cliente, permitiendo una comunicación bidireccional continua utilizando esta conexión. Hoy en día, los principales navegadores admiten WebSocket.
Se establece una conexión WebSocket a través de HTTP utilizando el campo de encabezado "Actualizar" HTTP para actualizar la conexión a un WebSocket. Tenga en cuenta que si un sitio web utiliza un proxy HTTP que no admite WebSocket, la conexión o la comunicación puede fallar, por lo que se requieren configuraciones adecuadas.