Websockets vs. Http/2 vs. SSE confrontato

Websockets vs. Http/2 vs. SSE confrontato
Esistono tre tecnologie o funzionalità primarie quando si tratta del mondo dei protocolli di comunicazione dati e server-cliente: HTTP/2, SSE e WebSockets. A seconda del punto di vista e dei requisiti, una di queste tecnologie può essere concorrenti o alleati.

Questo tutorial scomponderà ciò che queste tecnologie comportano e ciò che ognuno di loro offre. Questo ti aiuterà a capire e fare una scelta a seconda delle funzionalità che stai cercando.

NOTA: Questa guida non è un primer su nessuna delle tecnologie sopra menzionate. È semplicemente una panoramica di ciò che si può offrire sull'altro.

Iniziamo:

Websockets

WebSocket è un protocollo standard che fornisce una connessione persistente tra un server e un client. I websocket sono bidirezionali. Ciò significa che un server e un client e inviare e ricevere dati sono nello stesso canale. È un protocollo di comunicazione a tutto duplex implementato sul socket TCP/IP.

I websocket aiutano a contrastare i limiti del protocollo HTTP.

Innanzitutto, il protocollo HTTP non è bidirezionale. Il client richiede una risorsa specifica sul server. Una volta che il server trova e invia la risorsa al client, la connessione si chiude. Ciò significa su un flusso di dati molto attivo come il servizio di streaming, ci saranno troppe richieste di server.

A differenza di HTTP, WebSockets può mantenere una connessione fino a quando il client o il server non la terminano. Funziona prima creando una stretta di mano tra il client e il server, seguita da un'intestazione di aggiornamento. Una volta stabilito, viene stabilito un flusso di dati tra il server e il client.

Il diagramma sopra illustra come funziona il protocollo HTTP rispetto ai websocket.

NOTA: I diagrammi sopra non forniscono una conoscenza operativa a tutti gli effetti di protocolli HTTP o WebSocket.

Http/2

HTTP/2 o HTTP2 è la seconda implementazione del protocollo di rete HTTP utilizzato per definire il formato e la trasmissione dei dati. Lo scopo di HTTP/2 è quello di migliorare le prestazioni su HTTP riducendo la latenza, applicato abilitando funzionalità come richiesta completa e risposta e minimizzando gli sovraccarichi del protocollo tramite la compressione dei file di intestazione.

HTTP/2 è supportato nei principali browser e utilizzato in tutto il Web.

Di seguito sono riportati alcuni dei vantaggi offerti da http/2:

  1. Compatibile all'indietro con HTTP/1, inclusi codici di stato, intestazioni e URI sono riservati.
  2. Flusso di dati multipli in un'unica connessione tramite multiplexing.
  3. Compressione dell'intestazione, che migliora significativamente le prestazioni.
  4. Esecuzione dell'attività tramite protocollo binario anziché comandi di testo che semplifica l'applicazione di comando.
  5. Server Push consente al server di inviare dati aggiuntivi al client richiesto anche se i dati non sono inizialmente richiesti.
  6. Rimuove le caratteristiche come lo sharding del dominio.

Quanto sopra è una panoramica di base delle caratteristiche del protocollo HTTP/2. Di seguito è una semplice illustrazione del protocollo HTTP.

Credito: Mozilla Developer Network https: // sviluppatore.Mozilla.org/en-us/docs/web/http/panoramica

Eventi SENT SENT

L'evento Server-Sent (SSES) è una tecnologia che consente al client di ricevere aggiornamenti da un server HTTP. Sebbene sia sempre stato possibile spingere gli aggiornamenti dal server al client, il client dovrebbe richiedere se esistono aggiornamenti sul server. Utilizzando SSE, gli aggiornamenti sono automatici.

Le SSE sono implementate utilizzando flussi di dati HTTP normali. Pertanto, le SSE sono limitate al pool di connessioni del client (browser) di 6 connessioni HTTP simultanee a un server. Tuttavia, non forniscono la funzionalità per rilevare un client abbandonato.

https: // html.spec.Whatwg.Org/Multipage/Server-Sent-Event.HTML#Server-Sent-Event

Puoi anche trovare risorse per il client SSE nei link forniti di seguito:

https: // github.com/mpetazzoni/sseclient

https: // github.com/btubbs/sseclient

Websockets vs. Http/2 vs. SSE

Ora andiamo all'argomento ed elenchiamo le differenze tra le tecnologie discusse.

WebSocket Http/2 SSE
Full-duplex Mezzo duplex Full-duplex
Bidirezionale È richiesta l'interazione da un client con uno specifico metodo HTTP Unidirezionale
Meno sopra la testa Aggiunto sovraccarico a stretta di mano SSL
Il servizio è un'implementazione di base del protocollo Supportato solo in HTTP/2 La tecnologia di base
Supportato dai principali browser Supportato in tutti i browser Non tutti i browser lo supportano.
1024 Collegamenti paralleli 6-8 Collegamenti paralleli 6 connessioni parallele
Bilanciamento del carico non standard Bilanciamento del carico standard Bilanciamento del carico standard

Conclusione

Abbiamo superato tecnologie come WebSockets, come funzionano e la loro implementazione. Questo tutorial funge solo da base per le tecnologie menzionate. Considera le risorse esterne per saperne di più.