O que o iniciante precisa compreender sobre WebSocket?

Antes de começarmos a falar de WebSocket, é primordial que eu te introduza o HTTP(HyperText Transfer Protocol).

O HTTP é o principal protocolo de comunicação web, o modelo dele é baseado em requisição e resposta, para os mais nerds “request and response” e traduzindo para leigos, um navegador de internet envia solicitações e o servidor da aplicação responde com algo. A grosso modo é isso, a requisição HTTP é um GET quando queremos consultar algo, e um POST quando queremos enviar algo, repetindo a GROSSO MODO é isto. Como o servidor responde? Com um código de resposta e dependendo da configuração da aplicação e da requisição feita, responde com um conteúdo(body, não entraremos em detalhes dos cabeçalhos). O protocolo HTTP tem algumas limitações que você já deve ter percebido, o servidor RESPONDE, ele não tem poderes de ele abrir uma requisição para o cliente(ex: navegador), isso é o que chamamos de comunicação unidirecional. E temos outra limitação que é a conexão efêmera. O que seria isto? Cada requisição e resposta é independente, resultando em uma nova conexão para cada requisição. Sendo assim as limitações do HTTP o transformam em um protocolo ineficiente para aplicações que dependem de atualizações frequentes. Um exemplo de um chat, com o HTTP, só seria possível o servidor enviar mensagens quando ele for solicitado pelo cliente, algo que é estranho. Pois precisamos receber mensagens independentes de termos enviado mensagens ao servidor.

O WebSocket foi desenvolvido para superar estas limitações. Ele é um protocolo de comunicação bidirecional que opera sobre o protocolo HTTP. Para se estabelecer a conexão o processo é iniciado com uma requisição HTTP de handshake do cliente para o servidor solicitando uma conexão WebSocket esta requisição inclui um cabeçalho específico “Upgrade: websocket”. Quando o servidor recebe este tipo de solicitação, caso ele suporte o upgrade e a aceite, teremos uma resposta com o código de resposta “101 Switching Protocols” e a conexão será estabelecida. Esta é uma conexão bidirecional, o que significa isto, teremos uma troca de mensagens entre servidor e cliente sem uma nova requisição HTTP, agora tanto o cliente quanto o servidor podem enviar mensagens. No WebSocket, temos baixa latência, pois temos uma conexão sempre aberta, sem a sobrecarga de cabeçalhos a cada nova requisição. Os dados são enviamos como frames, podendo conter texto, dados binários ou sinais de controle, como os frames de fechamento de conexão. Algumas características técnicas:

  • Portas: Assim como no HTTP e HTTPS temos a porta 80(WS) e 443(WSS).
  • Protocolo: Inicia-se como HTTP, mas após o Handshake vira um protocolo WebSocket.
  • Segurança: WebSockets pode ser utilizado em conjunto com TLS (Transport Layer Security) para garantir a segurança da comunicação, sendo identificado pelo prefixo wss://.
  • Suporte a Browsers: A maioria dos navegadores modernos oferece suporte nativo ao WebSocket, tornando-o uma opção viável para aplicações web que necessitam de comunicação em tempo real. Exemplos de uso: Aplicações de chat em tempo real. Jogos online que requerem atualizações constantes entre o cliente e o servidor. Plataformas de trading que exigem atualização em tempo real de preços de ações. Monitoramento em tempo real de dados de sensores ou outros dispositivos IoT.

Gostou?

Muitissimo obrigado irmão, esses dias tava quebrando a cabeça tentando entender "bem" o WebSocket, seu post me ajudou e muito a entender melhor

Ótima publicação! Eu começei recentemente nesse mundo de Tecnologia e um dos temas que estava em uma grade de um curso online que faço é Socket.io, o que pelo que já vi é uma tecnologia que usa esse conceito de WebSocket. Agora acho que quando chegar lá estarei um pouco mais preparado

boa! obrigado por compartilhar! só senti falta de alguns exemplos

Você fala em construir um exemplo? Ficaria muito extenso. Mas posso fazer uma outra publicação dedicada a um exemplo.
Um exemplo bem simples seria bem interessante para o pessoal que está começando. Obrigado por compartilhar seu conhecimento!
sim, agradeço mais uma vez!

Boa, gostei bastante da explicação "à grosso modo".Muitas vezes é EXATAMENTE isso que precisamos saber, sem a necessidade de ficar assistindo vídeos de 30 fockin minutos ou lendo enciclopédias inteiras de enrolação. Por mais explicações "à grosso modo", sempre que possível!