Buscar

WebSocket e HTTP

Você sabia que WebSocket e HTTP são protocolos de comunicação, usados na comunicação entre cliente e servidor? No artigo de hoje o dataholic Michel Oliveira vai nos contar mais sobre esses protocolos. Boa leitura!


HTTP


O HTTP (HyperText Transfer Protocol) é um protocolo que permite a obtenção de recursos, como documentos HTML. É a base de qualquer troca de dados na Web e um protocolo que chamamos de cliente-servidor, o que significa que as requisições são iniciadas pelo destinatário (cliente), geralmente um navegador da web. Um documento completo é reconstruído a partir dos diferentes sub-documentos obtidos, como por exemplo texto, descrição do layout (CSS), imagens, vídeos, scripts e muito mais.

Imagem blog informática para todos

WebSockets


WebSocket é um protocolo de comunicação bidirecional, que pode enviar os dados do cliente para o servidor, ou do servidor para o cliente reutilizando o canal de conexão estabelecido (bidirecional). A conexão é mantida ativa até ser encerrada pelo cliente ou pelo servidor. Os WebSockets permitem que o servidor e o cliente enviem mensagens a qualquer momento, sem qualquer relação com uma solicitação anterior. Uma vantagem notável de usar WebSockets, é que quase todos os navegadores suportam o protocolo.

Imagem js-tutorials.com

Diferenças


O HTTP quando usado durante o acesso de um site, abre uma conexão com o servidor e é feita uma requisição para esse servidor. O servidor então processa essa requisição e devolve uma resposta normalmente em HTML. Quando essa resposta é recebida pelo cliente, a conexão com o servidor é fechada, impedindo que o navegador envie mais informações para o servidor e vice-versa. Se precisarmos pedir mais informações ao servidor, uma nova conexão deverá ser criada.


Cada requisição que fazemos para o servidor possuí um certo atraso, o que pode ser um problema para aplicações que precisam fazer requisições contínuas ao servidor, um exemplo disso são chats e jogos online.


Existe uma forma de o navegador fazer novas requisições para o servidor sem que haja a necessidade de recarregar a página. Podemos utilizar o ajax, que realiza uma chamada assíncrona com JavaScript, mas ainda assim, por debaixo dos panos o protocolo HTTP será utilizado, logo teremos perda de performance.


É aí que entra o Websocket, pois quando uma conexão com o servidor é criada utilizando esse protocolo, a conexão não é finalizada. Isso faz com que as informações trafeguem de forma muito mais rápida do que navegariam com o protocolo HTTP, pois não há mais necessidade de criar uma nova conexão toda vez que uma requisição for feita.


Tomando como exemplo um chat online, usando o Websocket, quando o usuário1 enviar uma mensagem para o usuário2, a mensagem vai para o servidor que automaticamente envia para o usuário1, sem que ele faça uma requisição.


Já com o HTTP, a mensagem é enviada ao servidor, e só é entregue ao usuário1 quando o mesmo faz a requisição. Utilizando o websockets não sobrecarregamos o servidor.


Embora a maioria das implementações de websockets sejam com node.js, você pode usá-lo com diversas outras linguagens, como por exemplo C, C++, C#, Java, entre outras.


O websockets é uma das melhores alternativas de protocolo atualmente, mas é claro que nem tudo é perfeito. É preciso saber o momento de quando usá-lo e quando não o usar, o ideal é usá-lo para aplicações que demandam comunicação bilateral em tempo real. Utilizá-lo em outros tipos de aplicação pode não ocasionar melhora, mas sim afetá-la negativamente com perda de performance.


WebSockets será a melhor escolha no contexto de comunicação contínua em tempo real. Você provavelmente já jogou os jogos .io, esses jogos são um exemplo perfeito de onde usar o poder do websocket; já pensou jogar agar.io com o protocolo HTTP? Não seria a melhor opção, não é mesmo?



Agora você já sabe como usar esses dois protocolos, que tal compartilhar com os amigos que ainda ficam na dúvida de qual usar? Deixe seu like, e comente sobre outras dúvidas nas quais podemos ajudar.💚🦾



Referencias

https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview