Websockets vs. Http/2 vs. SSE comparado

Websockets vs. Http/2 vs. SSE comparado
Existem três tecnologias ou recursos primários quando se trata do mundo dos protocolos de comunicação de dados e servidor-cliente: HTTP/2, SSE e WebSockets. Dependendo do seu ponto de vista e requisitos, qualquer uma dessas tecnologias pode ser concorrentes ou aliados.

Este tutorial quebrará o que essas tecnologias envolvem e o que cada uma delas oferece. Isso ajudará você a entender e fazer uma escolha, dependendo dos recursos que você está procurando.

OBSERVAÇÃO: Este guia não é uma cartilha em nenhuma das tecnologias mencionadas acima. É simplesmente uma visão geral do que se pode oferecer sobre o outro.

Vamos começar:

WebSockets

WebSocket é um protocolo padrão que fornece uma conexão persistente entre um servidor e um cliente. Os websockets são bidirecionais. Isso significa que um servidor e um cliente e os dados de envio e recebimento estão no mesmo canal. É um protocolo de comunicação duplex completo implementado no soquete TCP/IP.

Os websockets ajudam a combater os limites do protocolo HTTP.

Primeiro, o protocolo HTTP não é bidirecional. O cliente solicita um recurso específico no servidor. Depois que o servidor encontra e envia o recurso para o cliente, a conexão fecha. Isso significa que, em um fluxo de dados muito ativo, como o serviço de streaming, haverá muitas solicitações de servidor.

Ao contrário do HTTP, os websockets podem manter uma conexão até que o cliente ou o servidor seja encerrado. Funciona primeiro criando um aperto de mão entre o cliente e o servidor, seguido de um cabeçalho de atualização. Uma vez estabelecido, um fluxo de dados entre o servidor e o cliente é estabelecido.

O diagrama acima ilustra como o protocolo HTTP funciona em comparação com os websockets.

OBSERVAÇÃO: Os diagramas acima não fornecem um conhecimento prático de protocolos HTTP ou WebSocket.

Http/2

HTTP/2 ou HTTP2 é a segunda implementação do protocolo de rede HTTP usado para definir o formato e a transmissão de dados. O objetivo do HTTP/2 é melhorar o desempenho em relação ao HTTP, reduzindo a latência, aplicada pela ativação de recursos como solicitação e resposta completa e minimizando a sobrecarga do protocolo por meio de compactação de arquivos de cabeçalho.

HTTP/2 é suportado nos principais navegadores e usado em toda a web.

A seguir, são apresentadas algumas das vantagens oferecidas pelo HTTP/2:

  1. Compatível com versões anteriores com http/1, incluindo códigos de status, cabeçalhos e URIs são reservados.
  2. Fluxo de dados múltiplos em uma única conexão via solicitação multiplexação.
  3. Compressão do cabeçalho, o que melhora significativamente o desempenho.
  4. Execução de tarefas por protocolo binário em vez de comandos de texto que simplificam o aplicativo de comando.
  5. Push de servidor, permitindo que o servidor envie dados adicionais para o cliente solicitante, mesmo que os dados não sejam solicitados inicialmente.
  6. Ele remove recursos como o sharding de domínio.

O exposto acima é uma visão geral básica dos recursos do protocolo HTTP/2. Abaixo está uma ilustração simples do protocolo HTTP.

Crédito: Mozilla Developer Network https: // desenvolvedor.Mozilla.org/en-us/docs/web/http/visão geral

Eventos enviados ao servidor

Evento SSES (SSES) é uma tecnologia que permite ao cliente receber atualizações de um servidor HTTP. Embora sempre tenha sido possível empurrar atualizações do servidor para o cliente, o cliente precisaria solicitar se houver alguma atualização no servidor. Usando SSEs, as atualizações são automáticas.

SSEs são implementados usando fluxos de dados HTTP regulares. Portanto, os SSEs são limitados ao pool de conexão do cliente (navegador) de 6 conexões HTTP simultâneas para um servidor. No entanto, eles não fornecem a funcionalidade para detectar um cliente descartado.

https: // html.espec.Whatwg.org/multipage/servidor-enviado.HTML#servidor-SEMENT-EVENTS

Você também pode encontrar recursos para o cliente SSE nos links fornecidos abaixo:

https: // github.com/mpetazzoni/sseclient

https: // github.com/btubbs/sseclient

Websockets vs. Http/2 vs. Sse

Agora vamos ao tópico e listar as diferenças entre as tecnologias discutidas.

WebSocket Http/2 Sse
Full-Duplex Meio duplex Full-Duplex
Bidirecional É necessária interação de um cliente com um método HTTP específico Unidirecional
Menos sobrecarga Adicionado sobrecarga ao SSL Handshake
O serviço de serviço é uma implementação básica do protocolo Suportado apenas em HTTP/2 A tecnologia base
Apoiado pelos principais navegadores Suportado em todos os navegadores Nem todos os navegadores suportam.
1024 conexões paralelas 6-8 conexões paralelas 6 conexões paralelas
Balanceamento de carga não padrão Balanceamento de carga padrão Balanceamento de carga padrão

Conclusão

Passamos sobre tecnologias como WebSockets, como eles funcionam e sua implementação. Este tutorial serve apenas como base para as tecnologias mencionadas. Considere recursos externos para aprender mais.