WebSocket

WebSocket é um protocolo de comunicação para uma conexão TCP persistente, bidirecional, full duplex de um navegador web do usuário para um servidor.

Uma conexão WebSocket é iniciada enviando um pedido de handshake WebSocket de uma conexão HTTP de um navegador para um servidor para atualizar a conexão. Juntamente com o cabeçalho do pedido de atualização, o pedido de handshake inclui um cabeçalho Sec-WebSocket-Key de 64 bits. O servidor responde com um hash da chave em um cabeçalho Sec-Websocket-Auth. Esta troca de header impede que um proxy de cache reenvie trocas WebSocket anteriores.

A partir desse ponto, a conexão é binária e não está de acordo com o protocolo HTTP. Uma aplicação servidor está ciente de todas as conexões WebSocket e pode se comunicar com cada uma delas individualmente. Como o WebSocket permanece aberto, tanto o servidor quanto o usuário pode enviar mensagens a qualquer momento até que uma delas feche a sessão. A comunicação pode ser iniciada em qualquer uma das extremidades, o que torna possível a programação web orientada por eventos. Em contraste, HTTP padrão permite que apenas usuários solicitem novos dados.

WebSocket foi visto pela primeira vez nas especificações HTML5 como TCPConnection, um suporte para um socket API baseado em TCP. O protocolo foi desenvolvido por Ian Hickson e Michael Carter e padronizado pela IETF no RFC 6455 em 2011. O WebSocket é suportado por quase todos os principais navegadores web, incluindo Firefox, Chrome, Opera, Edge e Internet Explorer.

.