Artigo do tipo Tutorial
Recursos especiais neste artigo:
Artigo no estilo Solução Completa

Via de mão dupla com WebSockets
Este artigo explica o que é o protocolo WebSocket, qual foi a motivação de sua concepção, qual a relação do protocolo com a API WebSocket, quais são suas vantagens e o que ele oferece de novidade em relação às soluções atuais. Também demonstramos uma implementação de um exemplo prático utilizando o protocolo WebSocket em Java e HTML5.

Em que situação o tema é útil
Este tema é importante para os desenvolvedores e arquitetos que implementam e desenham soluções para a Web. Principalmente para aqueles que precisam oferecer mais dinamismo e interatividade com baixa latência em soluções de Internet.

Possui relação também com o contexto de integração entre sistemas. Conhecer este novo protocolo e quais são os recursos e vantagens fornecidos por ele são relevantes para todos os profissionais envolvidos com arquitetura de integração.

Estabelecer a comunicação entre duas partes envolve a definição de regras de sintaxe, sincronização e semântica na busca de um padrão o qual os participantes devem obedecer para compreender e ser compreendido em uma comunicação. É desta maneira que se estabelece um protocolo.

Na história da comunicação entre computadores, muitos protocolos foram criados, porém um deles se destacou por ser utilizado na construção da rede de computadores denominada ARPANET, que pertencia ao Departamento de Defesa Americano, e que a utilizava apenas em seus projetos. Esta rede incentivou o avanço de protocolos para a comunicação entre redes, possibilitando que múltiplas redes separadas pudessem se juntar em uma rede de redes. A ARPANET foi a primeira rede de computadores operacional e progenitora da rede global, conhecida hoje como Internet, a utilizar o conjunto de protocolos referenciado como TCP/IP.

Para que computadores pudessem trocar informações em um âmbito global, além de toda a necessidade física de infraestrutura, foi necessário escolher um protocolo que fundasse um padrão de comunicação entre os elementos. O protocolo TCP/IP foi concebido durante o projeto da ARPANET, estabelecido como padrão de comunicação entre todos os computadores militares do Departamento de Defesa Americano em 1982. Logo, na mesma década, este protocolo se consolidou como o padrão da Internet (a grande rede de redes mundial). Dessa forma, qualquer rede ou computador que desejasse participar da rede mundial deveria conhecer e saber “conversar” em TCP/IP.

Apesar de ser comumente chamado de protocolo, o TCP/IP é na verdade um conjunto de protocolos, cada qual com sua responsabilidade e papel para estabelecer uma comunicação. É formado basicamente por quatro camadas, que da inferior para a superior são: rede, internet, transporte e aplicação. Iremos nos referenciar ao conjunto de protocolos TCP/IP apenas como protocolo TCP/IP na continuidade deste artigo, para assim se adequar a sua forma popularmente conhecida e facilitar a leitura.

Utilizando a técnica de camada sobre camada, os protocolos são sobrepostos para estabelecer o canal de comunicação. Cada uma destas camadas fornece uma abstração responsável por resolver aspectos técnicos (roteamento, transporte, semântica) que isola os programas destas funções para se concentrarem apenas no tráfego do conteúdo intercambiado. Podemos observar esta sobreposição de camadas na Figura 1.


abrir imagem em nova janela

Figura 1. Composição das camadas que formam o conjunto de protocolos TCP/IP.

Na camada de transporte há duas opções de protocolo que se destacam: o Transmission Control Protocol (TCP) e o User Datagram Protocol (UDP). O protocolo TCP é mais utilizado por oferecer maior confiabilidade durante a comunicação do que o protocolo UDP. O TCP garante que os pacotes de dados trafegados permaneçam inalterados e que cheguem na mesma ordem com que foram enviados, enquanto o protocolo UDP nem mesmo garante a chegada dos dados. Por outro lado o UDP é mais rápido que o TCP, pois não realiza a verificação de erros nos pacotes de dados. Por este motivo o UDP é mais utilizado em aplicações de jogos e outras mais que necessitam de uma conexão mais veloz, porém não tão confiável. Como sempre, cada escolha uma renúncia.

Em uma das camadas, a quarta (de baixo para cima), está a de aplicação, onde podemos citar como exemplo de protocolo um dos mais conhecidos, o Hypertext Transfer Protocol (HTTP), que teve o seu desenvolvimento gerenciado pelo consórcio W3C e pela Internet Engineering Task Force (IETF), uma comunidade internacional aberta sem fins lucrativos, cujo objetivo é auxiliar a evolução e funcionamento da Arquitetura da Internet. O HTTP é um dos protocolos de aplicação mais difundidos, adotado pelos Navegadores Web como base para a linguagem HTML.

Seguindo esta técnica de sobreposição de camadas, temos outras abstrações adicionadas conforme o objetivo desejado, por exemplo: para se criar um padrão de comunicação heterogêneo entre aplicações de software, outro protocolo foi adicionado sobre o HTTP, o protocolo denominado SOAP, formando o atualmente conhecido Web Services. Estas sobreposições, definitivamente, criam mais onerações na comunicação, pois existe o dispêndio das partes em converter informações de e para a linguagem XML antes de enviar e receber os dados. Vale ressaltar que o SOAP pode ser também utilizado sobre outros protocolos de aplicação, porém é mais comumente utilizado sobre o HTTP.

Na Figura 2 ilustramos quais são os protocolos utilizados na comunicação dos Navegadores de Internet e aplicações de e-mails, enquanto na Figura 3 podemos observar a sobreposição de protocolos para estabelecer uma comunicação entre aplicações de software que precisam utilizar Web Services.

Figura 2. Camadas dos protocolos sobrepostos utilizados na comunicação de Páginas Webs e E-mails.


Figura 3. Dois exemplos de camadas de protocolos organizados para compor um canal para Web Services.

Nos exemplos ilustrados nas Figuras 1 e 2, os protocolos HTTP e SMTP se posicionam na quarta camada do conjunto de protocolos TCP/IP. O HTTP é o protocolo de aplicação utilizado pelo SOAP, REST e HTML, enquanto que o protocolo SMTP é utilizado pelo MIME (ver BOX 1).


BOX 1. MIME

Multipurpose Internet Mail Extension, criado em 1992 pela Internet Engineering Task Force (IETF), define um padrão para o formato de mensagens preponderantemente utilizado em e-mails.

É nesta quarta camada do protocolo TPC/IP que surge um novo protocolo de aplicação, mais um sob os cuidados da comunidade internacional IETF. Este novo protocolo foi batizado de WebSocket.

O RFC (Request for Comments) de número 6455 da IETF especifica o protocolo WebSocket. Neste memorando é descrito a razão de sua criação, ou seja, qual é a motivação de sua existência e os detalhes técnicos de seu funcionamento. A categoria desta especificação se encontra em Standards-Track com o status de Proposed Standard, que possui o seguinte significado segundo a IETF: “uma especificação Proposed Standard se encontra geralmente estável, com alternativas de desenhos identificadas já definidas, acredita que já seja bem-compreendida, que já foi recebida uma avaliação significativa e aparenta despertar suficiente interesse da comunidade para ser considerada de grande valor. No entanto, mais experiências podem resultar em uma alteração ou mesmo um retraimento da especificação antes de avançar.”.

...
Quer ler esse conteúdo completo? Tenha acesso completo