Função | Comunicação bidirecional em uma conexão TCP para navegadores da web |
---|---|
Acrônimo | ws |
Data de criação | 2011 |
Porto | 80 e 443 |
RFC | 6455 |
WebSocket é um padrão da Web que designa um protocolo de rede da camada de aplicativo e uma interface de programação da World Wide Web para criar canais de comunicação full-duplex em uma conexão TCP para navegadores da web. O protocolo foi padronizado pelo IETF na RFC 6455 em 2011 e a interface de programação pelo W3C .
O protocolo WebSocket é usado para abrir um canal de comunicação bidirecional (ou " full-duplex ") em um soquete TCP para navegadores e servidores da web . Mais especificamente, permite:
A crescente interatividade das aplicações web, acompanhando a melhoria no desempenho do navegador, rapidamente tornou necessário o desenvolvimento de técnicas de comunicação bidirecional entre a aplicação web cliente e os processos do servidor. Técnicas baseadas na chamada de solicitação pelo cliente via objeto XMLHttpRequest e usando solicitações HTTP com um tipo TTL longo armazenado pelo servidor para uma resposta subsequente ao cliente tornaram possível superar essa falta e foram popularizadas pelas arquiteturas Ajax de sucesso .
Segundo o cientista da computação Stéphane Bortzmeyer , "WebSocket oferece praticamente o mesmo serviço para aplicativos que o TCP" , mas tem a vantagem de contornar os muitos obstáculos intermediários aos fluxos de rede ( firewalls etc.) na "selva" que se tornou a Web contemporânea . Ao utilizar a arquitetura de HTTP (relay, autenticação, portas 80 e 443), com muito pouca filtragem, para criar um novo protocolo de transporte, os criadores do Websocket visam garantir uma comunicação de rede bidirecional que não era mais garantida pelo TCP. A principal limitação do Websocket é que não é um protocolo geral: a comunicação deve ser feita necessariamente por meio do navegador da Web do cliente ou de algumas bibliotecas dedicadas (ver seção “Implementações” ).
A interface de programação WebSocket foi desenvolvida dentro do WHATWG .
O próprio princípio do WebSocket foi contestado dentro dos corpos de especificação durante seu desenvolvimento, em nome do fato de que era indiscutivelmente melhor resolver os problemas de filtragem encontrados na camada de rede em vez de criar um novo protocolo acima dela.
Uma falha de segurança foi descoberta na API das primeiras versões do websocket. A segurança foi comprometida ao navegar pela substituição de um arquivo JavaScript por malware durante a fase de handshake . Como essa falha está na própria API, ela não pode ser corrigida por nenhum patch do navegador. Em algumas versões de navegadores como Firefox 4 e 5, Opera 11 e Internet Explorer 9, o WebSocket foi desativado devido a esta falha.
A falha de segurança no Firefox foi corrigida no Firefox 6 (mecanismo Gecko 6.0).
O Internet Explorer implementou o websocket com o IE10.
No Opera, sempre foi possível reativar o websocket. No Opera 12, o websocket é ativado.
Características | Cromo | Firefox (Gecko) | Internet Explorer | Ópera | Safári |
---|---|---|---|---|---|
Suporte para versão -76 | 6 | 4,0 (2,0) | Sem suporte | 11,00 (desativado) | 5.0.1 |
Suporte à versão 7 do protocolo | Sem suporte | 6,0 | Sem suporte | Sem suporte | Sem suporte |
Suporte à versão 10 do protocolo | 14 | 7,0 | HTML5 Labs | ? | ? |
Padrão - Suporte RFC 6455 | 16 | 11,0 | 10 | 12,10 | 6 |