WebSocket ist eines der im Internet verwendeten Kommunikationsprotokolle. Es ermöglicht die bidirektionale Kommunikation zwischen Webservern und Clients. Das Protokoll wurde von der Internet Engineering Task Force (IETF) als „RFC 6455“ definiert.

Das Web wurde ursprünglich zur Unterstützung von Hypertext entwickelt, hat sich seitdem jedoch dahingehend weiterentwickelt, dynamischere Webanwendungen zu ermöglichen. Eine hierfür häufig eingesetzte Technik ist AJAX (Asynchronous JavaScript and XML), das XMLHttpRequest verwendet, um einen granularen Datenaustausch mit Webservern anstelle vollständiger Seitenaktualisierungen zu ermöglichen. Dies sorgt für eine reaktionsschnellere Benutzererfahrung. Bei AJAX muss jedoch jeder Datenaustausch von der Clientseite ausgehen, wodurch es für den Webserver schwierig ist, Daten proaktiv an Clients zu übertragen.

Um diese Einschränkung zu überwinden, wurde Comet als Erweiterung von AJAX entwickelt. Comet funktioniert, indem „bewusst Anfragen mit verzögerten Antworten erstellt werden“, wobei die HTTP-Verbindung zum Webserver offengehalten wird, sodass der Server jederzeit Antworten senden kann, wenn er Informationen übertragen möchte. Allerdings weist Comet einen hohen Ressourcenverbrauch auf.

WebSocket wurde als Weiterentwicklung von Comet entwickelt und ist in HTML5 verfügbar. Dabei bleibt eine Verbindung zwischen Server und Client geöffnet, die eine kontinuierliche bidirektionale Kommunikation ermöglicht. Heutzutage unterstützen alle gängigen Browser WebSocket.

Eine WebSocket-Verbindung wird über HTTP hergestellt. Dabei wird die Verbindung mithilfe des HTTP-Header-Felds „Upgrade“ auf WebSocket umgestellt. Verwendet eine Website einen HTTP-Proxy, der WebSocket nicht unterstützt, kann der Verbindungsaufbau oder die Kommunikation fehlschlagen. Daher ist eine entsprechende Konfiguration erforderlich.