WebSockets - Comunicação Duplex
Antes de mergulhar na necessidade de Web sockets, é necessário dar uma olhada nas técnicas existentes, que são utilizadas para duplex communicationentre o servidor e o cliente. Eles são os seguintes -
- Polling
- Long Polling
- Streaming
- Postback e AJAX
- HTML5
Votação
O polling pode ser definido como um método que realiza solicitações periódicas, independentemente dos dados existentes na transmissão. As solicitações periódicas são enviadas de forma síncrona. O cliente faz uma solicitação periódica em um intervalo de tempo especificado ao servidor. A resposta do servidor inclui dados disponíveis ou alguma mensagem de aviso nele.
Long Polling
As pesquisas longas, como o nome sugere, incluem técnicas semelhantes, como as pesquisas. O cliente e o servidor mantêm a conexão ativa até que alguns dados sejam buscados ou ocorra o tempo limite. Se a conexão for perdida por algum motivo, o cliente pode reiniciar e executar a solicitação sequencial.
A sondagem longa nada mais é do que melhoria de desempenho em relação ao processo de sondagem, mas solicitações constantes podem retardar o processo.
Transmissão
É considerada a melhor opção para transmissão de dados em tempo real. O servidor mantém a conexão aberta e ativa com o cliente até e a menos que os dados necessários estejam sendo buscados. Nesse caso, a conexão é considerada aberta indefinidamente. O streaming inclui cabeçalhos HTTP que aumentam o tamanho do arquivo, aumentando o atraso. Isso pode ser considerado uma grande desvantagem.
AJAX
AJAX é baseado em Javascript XmlHttpRequestObjeto. É uma forma abreviada de Javascript assíncrono e XML.XmlHttpRequestO objeto permite a execução do Javascript sem recarregar a página da web completa. AJAX envia e recebe apenas uma parte da página da web.
O snippet de código da chamada AJAX com XmlHttpRequest O objeto é o seguinte -
var xhttp;
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
As principais desvantagens de AJAX em comparação com Web Sockets são -
- Eles enviam cabeçalhos HTTP, o que aumenta o tamanho total.
- A comunicação é half-duplex.
- O servidor web consome mais recursos.
HTML5
HTML5 é uma estrutura robusta para desenvolver e projetar aplicativos da web. Os principais pilares incluemMark-up, CSS3 e Javascript APIs juntos.
O diagrama a seguir mostra os componentes HTML5 -
O trecho de código fornecido abaixo descreve a declaração de HTML5 e seu doctype.
<!DOCTYPE html>
Por que precisamos de Web Sockets?
A Internet foi concebida para ser uma coleção de páginas em HTML (Hypertext Mark-up Language) que se ligam umas às outras para formar uma rede conceitual de informações. Com o passar do tempo, os recursos estáticos aumentaram em número e itens mais ricos, como imagens, passaram a fazer parte da web fabric.
Tecnologias de servidor avançadas que permitem páginas de servidor dinâmicas - páginas cujo conteúdo foi gerado com base em uma consulta.
Em breve, a necessidade de ter páginas da Web mais dinâmicas levou à disponibilidade de Dynamic Hypertext Mark-up Language (DHTML). Tudo graças ao JavaScript. Nos anos seguintes, vimoscross frame communication em uma tentativa de evitar recarregamentos de página seguidos por HTTP Polling dentro de quadros.
No entanto, nenhuma dessas soluções ofereceu uma solução verdadeiramente padronizada para vários navegadores para comunicação bidirecional em tempo real entre um servidor e um cliente.
Isso deu origem à necessidade do protocolo Web Sockets. Isso deu origem à comunicação full-duplex trazendo funcionalidade rica em desktop para todos os navegadores da web.