HTTP e WebSocket sono entrambi protocolli di comunicazione utilizzati nella comunicazione client-server.
Protocollo HTTP: HTTP è unidirezionale in cui il client invia la richiesta e il server invia la risposta. Facciamo un esempio quando un utente invia una richiesta al server questa richiesta va sotto forma di HTTP o HTTPS, dopo aver ricevuto una richiesta il server invia la risposta al client, ogni richiesta è associata ad una risposta corrispondente, dopo aver inviato la risposta il la connessione viene chiusa, ogni richiesta HTTP o HTTPS stabilisce ogni volta la nuova connessione al server e dopo aver ottenuto la risposta la connessione viene terminata da sola.
HTTP è un protocollo stateless che funziona su TCP che è un protocollo orientato alla connessione che garantisce la consegna del trasferimento di pacchetti di dati utilizzando i metodi di handshaking a tre vie e ritrasmette i pacchetti persi.
HTTP può essere eseguito su qualsiasi protocollo affidabile orientato alla connessione come TCP, SCTP. Quando un client invia una richiesta HTTP al server, viene aperta una connessione TCP tra il client e il server e dopo aver ricevuto la risposta la connessione TCP viene terminata, ogni richiesta HTTP apre una connessione TCP separata al server, ad es. se il client invia 10 richieste al server verranno aperte 10 connessioni TCP separate. e chiudi dopo aver ricevuto la risposta/fallback.
Informazioni sui messaggi HTTP codificate in ASCII, ciascun messaggio di richiesta HTTP composto dalla versione del protocollo HTTP (HTTP/1.1, HTTP/2), metodi HTTP (GET/POST, ecc.), intestazioni HTTP (tipo di contenuto, lunghezza del contenuto), informazioni sull'host, ecc. . e il corpo che contiene il messaggio effettivo che viene trasferito al server. Le intestazioni HTTP variavano da 200 byte a 2 KB, la dimensione comune dell'intestazione HTTP è 700-800 byte. Quando un'applicazione Web utilizza più cookie e altri strumenti sul lato client che espandono le funzionalità di archiviazione dell'agente, riduce il carico utile dell'intestazione HTTP.

WebSocket: WebSocket è bidirezionale, un protocollo full-duplex che viene utilizzato nello stesso scenario di comunicazione client-server, a differenza di HTTP parte da ws:// O wss:// . È un protocollo con stato, il che significa che la connessione tra client e server rimarrà attiva finché non verrà terminata da una delle parti (client o server). Dopo aver chiuso la connessione da parte del client e del server, la connessione viene terminata da entrambe le estremità.
converte un int in una stringa java
Facciamo un esempio di comunicazione client-server, c'è il client che è un browser web e un server, ogni volta che avviamo la connessione tra client e server, il client-server effettua l'handshaking e decide di creare una nuova connessione e questa connessione rimarrà in vita finché non verrà eliminato da qualcuno di loro. Quando la connessione è stabilita e attiva la comunicazione avviene utilizzando lo stesso canale di connessione fino al suo termine.
Ecco come dopo l'handshake client-server, il client-server decide una nuova connessione per mantenerlo in vita, questa nuova connessione sarà conosciuta come WebSocket. Una volta stabilito il collegamento di comunicazione e aperta la connessione, lo scambio di messaggi avverrà in modalità bidirezionale finché non persisterà la connessione tra client-server. Se qualcuno di loro (client-server) muore o decide di chiudere la connessione viene chiusa da entrambe le parti. Il modo in cui funziona il socket è leggermente diverso da come funziona HTTP, il codice di stato 101 denota il protocollo di commutazione in WebSocket.

Quando è possibile utilizzare una presa Web:
- Applicazione web in tempo reale: l'applicazione web in tempo reale utilizza un socket web per mostrare i dati sul lato client, che vengono continuamente inviati dal server backend. In WebSocket, i dati vengono continuamente inviati/trasmessi nella stessa connessione già aperta, ecco perché WebSocket è più veloce e migliora le prestazioni dell'applicazione.
Per es. in un sito web di trading o trading di bitcoin, per visualizzare la fluttuazione dei prezzi e i dati di movimento vengono continuamente inviati dal server backend al cliente utilizzando un canale WebSocket.
Applicazione di gioco: in un'applicazione di gioco, potresti concentrarti su questo, i dati vengono ricevuti continuamente dal server e, senza aggiornare l'interfaccia utente, avranno effetto sullo schermo, l'interfaccia utente viene aggiornata automaticamente senza nemmeno stabilire la nuova connessione, quindi è molto utile in un'applicazione di gioco.
Applicazione di chat: le applicazioni di chat utilizzano WebSocket per stabilire la connessione una sola volta per lo scambio, la pubblicazione e la trasmissione del messaggio tra gli abbonati. Riutilizza la stessa connessione WebSocket per l'invio e la ricezione del messaggio e per il trasferimento dei messaggi uno a uno.
Quando non utilizzare WebSocket: WebSocket può essere utilizzato se desideriamo flussi di dati aggiornati in tempo reale o continui che vengono trasmessi sulla rete. Se vogliamo recuperare vecchi dati o vogliamo ottenere i dati solo una volta per elaborarli con un'applicazione, dovremmo utilizzarli Protocollo HTTP , i vecchi dati che non sono richiesti molto frequentemente o recuperati solo una volta possono essere interrogati dalla semplice richiesta HTTP, quindi in questo scenario è meglio non utilizzare WebSocket.
Nota: I servizi web RESTful sono sufficienti per ottenere i dati dal server se li carichiamo una sola volta.
Differenze tra connessione HTTP e WebSocket:
| Connessione WebSocket | Connessione HTTP |
|---|---|
| WebSocket è un protocollo di comunicazione bidirezionale in grado di inviare i dati dal client al server o dal server al client riutilizzando il canale di connessione stabilito. La connessione viene mantenuta attiva finché non viene terminata dal client o dal server. | Il protocollo HTTP è un protocollo unidirezionale che funziona sopra il protocollo TCP che è un protocollo del livello di trasporto orientato alla connessione, possiamo creare la connessione utilizzando i metodi di richiesta HTTP dopo aver ottenuto la risposta La connessione HTTP viene chiusa. |
| Quasi tutte le applicazioni in tempo reale come i servizi (trading, monitoraggio, notifica) utilizzano WebSocket per ricevere i dati su un unico canale di comunicazione. | La semplice applicazione RESTful utilizza il protocollo HTTP che è senza stato. |
| Tutte le applicazioni aggiornate di frequente utilizzano WebSocket perché è più veloce della connessione HTTP. | Quando non vogliamo mantenere una connessione per un determinato periodo di tempo o riutilizzare la connessione per la trasmissione di dati; Una connessione HTTP è più lenta di WebSocket. |
Nota: A seconda del tuo progetto devi scegliere dove sarà WebSocket o Connessione HTTP.