DEV Community

Cover image for Websockets
Isaac Alves Pinheiro
Isaac Alves Pinheiro

Posted on

Websockets

O websocket é um protocolo que possibilita a comunicação bidirecional entre um navegador web e o servidor. Ele permite a criação de um túnel para transformar, de forma contínua, informações entre um navegador e um servidor de uma aplicação. Ele faz parte das especificações do HTML5 e é suportado pelas últimas versões dos navegadores.

Para entender melhor esse protocolo, vamos compara-lo ao modelo HTTP que é o protocolo que utilizamos no dia-a-dia para acessarmos um site. Ou seja, quando abrimos o site no navegador uma conexão é criada e em seguida é realizada uma requisição para o servidor do site que você está acessando. Ao recebe-la, o servidor fará os devidos processos internos para então retornar/devolver uma resposta dessa requisição. Assim que essa resposta é bem recebida (HTTP GET status 200 = OK), essa conexão será finalizada, ou seja, seu browser não enviará mais informações para seu servidor e nem ele para seu navegador.

Caso, se deve pedir mais informação para esse servidor, mais uma conexão deverá ser criada, então, o mesmo processo se repetirá.

Como cada requisição dessas possui um atraso nesse modelo client-servidor, isso acaba sendo um grande problema para aplicações web que precisam requisitar ao servidor informações de forma contínua (tempo real de requisição e resposta), como por exemplo, podemos citar aplicações como: um chat, um jogo online, gps e etc.

Mesmo após receber as informações do servidor o navegador pode realizar novas requisições sem precisar recarregar a página utilizando o AJAX - Asynchronous Javascript and XML, no qual faz uma chamada assíncrona feita com JavaScript.

No entanto, mesmo realizando uma chamada assíncrona, por baixo dos panos, será utilizado o protocolo HTTP. Ou seja, uma nova conexão será realizada junto com uma nova requisição, sendo assim, cairemos no mesmo problema de performance.

Portanto, o websocket veio para resolver esse problema de comunicação. Uma vez utilizando ele a conexão criada entre navegador e servidor é contínua. E por isso a velocidade com que essas informações irão trafegar é muito superior ao do protocolo HTTP. Não sendo mais necessário a criação de uma nova conexão.

SurveyJS custom survey software

Simplify data collection in your JS app with a fully integrated form management platform. Includes support for custom question types, skip logic, integrated CCS editor, PDF export, real-time analytics & more. Integrates with any backend system, giving you full control over your data and no user limits.

Learn more

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay