HTTP och WebSocket är båda kommunikationsprotokoll som används i klient-serverkommunikation.
HTTP-protokoll: HTTP är enkelriktad där klienten skickar begäran och servern skickar svaret. Låt oss ta ett exempel när en användare skickar en förfrågan till servern denna begäran går i form av HTTP eller HTTPS, efter att ha mottagit en begäran server skicka svaret till klienten, varje förfrågan är associerad med ett motsvarande svar, efter att ha skickat svaret anslutningen stängs, varje HTTP- eller HTTPS-begäran upprättar den nya anslutningen till servern varje gång och efter att ha fått svaret avbryts anslutningen av sig själv.
HTTP är ett tillståndslöst protokoll som körs ovanpå TCP som är ett anslutningsorienterat protokoll som garanterar leverans av datapaketöverföring med hjälp av trevägshandskakningsmetoder och återsänder de förlorade paketen.
HTTP kan köras ovanpå alla pålitliga anslutningsorienterade protokoll som TCP, SCTP. När en klient skickar en HTTP-förfrågan till servern är en TCP-anslutning öppen mellan klienten och servern och efter att ha fått svaret avbryts TCP-anslutningen, varje HTTP-förfrågan öppnar en separat TCP-anslutning till servern, för t.ex. om klienten skickar 10 förfrågningar till servern kommer de 10 separata TCP-anslutningarna att öppnas. och stängs efter att ha fått svar/fallback.
HTTP-meddelandeinformation kodad i ASCII, varje HTTP-begäranmeddelande består av HTTP-protokollversion (HTTP/1.1, HTTP/2), HTTP-metoder (GET/POST, etc.), HTTP-rubriker (innehållstyp, innehållslängd), värdinformation, etc. . och kroppen som innehåller det faktiska meddelandet som överförs till servern. HTTP-huvuden varierade från 200 byte till 2 KB i storlek, den vanliga storleken på HTTP-huvuden är 700-800 byte. När en webbapplikation använder fler cookies och andra verktyg på klientsidan som utökar agentens lagringsfunktioner minskar det HTTP-huvudets nyttolast.

WebSocket: WebSocket är dubbelriktat, ett full-duplex-protokoll som används i samma scenario av klient-server-kommunikation, till skillnad från HTTP börjar det från ws:// eller wss:// . Det är ett tillståndsprotokoll, vilket innebär att anslutningen mellan klient och server kommer att hållas vid liv tills den avslutas av endera parten (klient eller server). Efter att ha stängt anslutningen av någon av klienten och servern, avslutas anslutningen från båda ändarna.
nginx-variabler
Låt oss ta ett exempel på klient-server-kommunikation, det finns klienten som är en webbläsare och en server, när vi initierar anslutningen mellan klient och server, gjorde klient-servern handskakningen och beslutade att skapa en ny anslutning och denna anslutning kommer att hållas vid liv tills de avslutas av någon av dem. När anslutningen är etablerad och aktiv sker kommunikationen med samma anslutningskanal tills den avslutas.
Så här efter handskakning av klient-server bestämmer klient-servern en ny anslutning för att hålla den vid liv, denna nya anslutning kommer att kallas WebSocket. När väl kommunikationslänketableringen och anslutningen har öppnats kommer meddelandeutbyte att ske i dubbelriktat läge tills anslutningen kvarstår mellan klient-server. Om någon av dem (klient-server) dör eller bestämmer sig för att stänga stängs anslutningen av båda parterna. Sättet som socket fungerar på skiljer sig något från hur HTTP fungerar, statuskoden 101 anger växlingsprotokollet i WebSocket.

När kan en webbsocket användas:
- Webbapplikation i realtid: Webbapplikation i realtid använder en webbsocket för att visa data i klientänden, som kontinuerligt skickas av backend-servern. I WebSocket skjuts/sänds data kontinuerligt till samma anslutning som redan är öppen, det är därför WebSocket är snabbare och förbättrar applikationens prestanda.
För t.ex. i en handelswebbplats eller bitcoin-handel, för att visa prisfluktuationer och rörelsedata skjuts kontinuerligt av backend-servern till klientänden med hjälp av en WebSocket-kanal.
Spelapplikation: I en spelapplikation kan du fokusera på det, data tas kontinuerligt emot av servern och utan att uppdatera gränssnittet kommer det att träda i kraft på skärmen, gränssnittet uppdateras automatiskt utan att ens upprätta den nya anslutningen, så det är mycket hjälpsam i en spelapplikation.
Chattapplikation: Chattapplikationer använder WebSockets för att upprätta anslutningen endast en gång för utbyte, publicering och sändning av meddelandet bland prenumeranterna. Den återanvänder samma WebSocket-anslutning, för att skicka och ta emot meddelandet och för en-till-en-meddelandeöverföring.
När ska du inte använda WebSocket: WebSocket kan användas om vi vill ha några uppdaterade eller kontinuerliga dataströmmar i realtid som sänds över nätverket. Om vi vill hämta gamla data, eller vill få data bara en gång för att bearbeta den med en applikation bör vi gå med HTTP-protokoll , gamla data som inte krävs särskilt ofta eller som bara hämtas en gång kan efterfrågas av den enkla HTTP-förfrågan, så i det här scenariot är det bättre att inte använda WebSocket.
Notera: RESTful webbtjänster är tillräckliga för att få data från servern om vi laddar data bara en gång.
Skillnader mellan HTTP och WebSocket Connection:
| WebSocket-anslutning | HTTP-anslutning |
|---|---|
| WebSocket är ett dubbelriktat kommunikationsprotokoll som kan skicka data från klienten till servern eller från servern till klienten genom att återanvända den etablerade anslutningskanalen. Anslutningen hålls vid liv tills den avslutas av antingen klienten eller servern. | HTTP-protokollet är ett enkelriktat protokoll som fungerar ovanpå TCP-protokollet som är ett anslutningsorienterat transportlagerprotokoll, vi kan skapa anslutningen genom att använda HTTP-begäransmetoder efter att svaret HTTP-anslutningen stängs. |
| Nästan alla realtidsapplikationer som (handel, övervakning, notifiering) tjänster använder WebSocket för att ta emot data på en enda kommunikationskanal. | Enkel RESTful-applikation använder HTTP-protokoll som är tillståndslöst. |
| Alla ofta uppdaterade applikationer använde WebSocket eftersom det är snabbare än HTTP-anslutning. | När vi inte vill behålla en anslutning under en viss tid eller återanvända anslutningen för att överföra data; En HTTP-anslutning är långsammare än WebSockets. |
Notera: Beroende på ditt projekt måste du välja var det ska vara WebSocket eller HTTP Connection.