WebSocket é um dos protocolos de comunicação usados na internet. Ele permite a comunicação bidirecional entre servidores web e clientes. O protocolo é definido pela Internet Engineering Task Force (IETF) como "RFC 6455".

A web foi inicialmente projetada para oferecer suporte a hipertexto, mas desde então evoluiu para viabilizar aplicações web mais dinâmicas. Uma técnica amplamente adotada para isso é o AJAX (JavaScript Assíncrono e XML), que usa XMLHttpRequest para permitir trocas de dados granulares com servidores web, em vez de atualizações de páginas inteiras. Isso proporciona uma experiência mais responsiva ao usuário. No entanto, com o AJAX, todas as trocas de dados precisam ser iniciadas pelo lado do cliente, o que dificulta o envio proativo de dados do servidor web para os clientes.

Para contornar essa limitação, o Comet foi desenvolvido como uma extensão do AJAX. O Comet funciona “criando intencionalmente solicitações com respostas atrasadas”, mantendo aberta a conexão HTTP com o servidor web para que ele possa enviar respostas sempre que quiser transmitir informações. No entanto, o Comet apresenta um problema de alto consumo de recursos.

O WebSocket foi desenvolvido como um aprimoramento do Comet e está disponível no HTML5. Ele mantém aberta uma conexão entre o servidor e o cliente, permitindo a comunicação bidirecional contínua por meio dessa conexão. Atualmente, os principais navegadores oferecem suporte ao WebSocket.

Uma conexão WebSocket é estabelecida via HTTP usando o campo de cabeçalho HTTP "Upgrade" para converter a conexão em uma conexão WebSocket. Observe que, se um site usar um proxy HTTP que não ofereça suporte a WebSocket, a conexão ou a comunicação poderá falhar; portanto, são necessárias configurações adequadas.