WebSocket
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 se diseñó inicialmente para admitir hipertexto, pero desde entonces ha evolucionado para permitir aplicaciones web más dinámicas. Una técnica ampliamente adoptada para lograrlo es AJAX (JavaScript asíncrono y XML), que utiliza XMLHttpRequest para facilitar intercambios de datos específicos con servidores web en lugar de actualizar páginas completas. Esto permite ofrecer una experiencia de usuario más ágil. Sin embargo, con AJAX, todos los intercambios de datos deben iniciarse en 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 intencionadamente solicitudes con respuestas diferidas», manteniendo abierta la conexión HTTP con el servidor web para que este pueda enviar respuestas cuando quiera transmitir información. Sin embargo, Comet presenta un problema de elevado 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, lo que permite una comunicación bidireccional continua a través de dicha conexión. Actualmente, los principales navegadores son compatibles con WebSocket.
Una conexión WebSocket se establece mediante HTTP utilizando el campo de cabecera «Upgrade» de HTTP para convertirla en una conexión WebSocket. Tenga en cuenta que, si un sitio web utiliza un proxy HTTP que no admite WebSocket, la conexión o la comunicación pueden fallar, por lo que es necesario configurar el proxy correctamente.

