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.

Top comments (0)