HTTP a WebSocket sú komunikačné protokoly používané v komunikácii klient-server.
HTTP protokol: HTTP je jednosmerný, kde klient odošle požiadavku a server odošle odpoveď. Zoberme si príklad, keď používateľ odošle požiadavku na server, táto požiadavka má formu HTTP alebo HTTPS, po prijatí požiadavky server odošle odpoveď klientovi, každá požiadavka je spojená s príslušnou odpoveďou, po odoslaní odpovede spojenie sa uzavrie, každá požiadavka HTTP alebo HTTPS zakaždým vytvorí nové spojenie so serverom a po prijatí odpovede sa spojenie samo ukončí.
HTTP je bezstavový protokol, ktorý beží nad TCP, čo je protokol orientovaný na spojenie, ktorý zaručuje doručovanie prenosu dátových paketov pomocou trojcestných metód handshakingu a opätovne prenáša stratené pakety.
HTTP môže bežať nad každým spoľahlivým protokolom orientovaným na pripojenie, ako je TCP, SCTP. Keď klient odošle HTTP požiadavku na server, medzi klientom a serverom je otvorené TCP spojenie a po prijatí odpovede sa TCP spojenie ukončí, každá HTTP požiadavka otvorí samostatné TCP spojenie so serverom, napr. ak klient odošle na server 10 požiadaviek, otvorí sa 10 samostatných TCP spojení. a po získaní odpovede/náhrady sa zatvorte.
Informácie o správe HTTP zakódované v ASCII, každá správa s požiadavkou HTTP zložená verzia protokolu HTTP (HTTP/1.1, HTTP/2), metódy HTTP (GET/POST atď.), hlavičky HTTP (typ obsahu, dĺžka obsahu), informácie o hostiteľovi atď. a telo, ktoré obsahuje aktuálnu správu, ktorá sa prenáša na server. Veľkosť hlavičiek HTTP sa pohybovala od 200 bajtov do 2 kB, bežná veľkosť hlavičky HTTP je 700 – 800 bajtov. Keď webová aplikácia používa viac súborov cookie a iných nástrojov na strane klienta, ktoré rozširujú funkcie úložiska agenta, znižuje sa tým užitočné zaťaženie hlavičky HTTP.

WebSocket: WebSocket je obojsmerný, plne duplexný protokol, ktorý sa používa v rovnakom scenári komunikácie klient-server, na rozdiel od HTTP začína od ws:// alebo wss:// . Je to stavový protokol, čo znamená, že spojenie medzi klientom a serverom zostane nažive, kým ho ktorákoľvek strana (klient alebo server) neukončí. Po ukončení spojenia klientom a serverom sa spojenie ukončí z oboch koncov.
zreťazenie java reťazec
Zoberme si príklad komunikácie klient-server, existuje klient, ktorý je webovým prehliadačom a serverom, vždy keď iniciujeme spojenie medzi klientom a serverom, klient-server vykoná handshaking a rozhodne sa vytvoriť nové spojenie a toto spojenie zostane nažive, kým ho niektorý z nich neukončí. Keď je spojenie nadviazané a aktívne, komunikácia prebieha pomocou rovnakého pripojovacieho kanála, kým sa neukončí.
Takto sa po vzájomnej komunikácii klient-server rozhodne klient-server o novom pripojení, aby ho udržalo pri živote, toto nové pripojenie bude známe ako WebSocket. Po nadviazaní komunikačného spojenia a nadviazaní spojenia bude výmena správ prebiehať v obojsmernom režime, kým spojenie medzi klient-server pretrváva. Ak niekto z nich (klient-server) zomrie alebo sa rozhodne ukončiť spojenie, obe strany uzavrú spojenie. Spôsob, akým funguje socket, sa mierne líši od toho, ako funguje HTTP, stavový kód 101 označuje prepínací protokol vo WebSocket.

Kedy je možné použiť webovú zásuvku:
- Webová aplikácia v reálnom čase: Webová aplikácia v reálnom čase využíva webový soket na zobrazenie údajov na strane klienta, ktoré neustále odosiela backend server. Vo WebSocket sa dáta neustále posúvajú/prenášajú do rovnakého pripojenia, ktoré je už otvorené, preto je WebSocket rýchlejší a zlepšuje výkon aplikácie.
Pre napr. na obchodnej webovej stránke alebo pri obchodovaní s bitcoinmi sú údaje o kolísaní cien a pohybe nepretržite posúvané backendovým serverom ku koncu klienta pomocou kanála WebSocket.
Herná aplikácia: V hernej aplikácii sa môžete zamerať na to, server neustále prijíma údaje a bez obnovenia používateľského rozhrania sa prejaví na obrazovke, používateľské rozhranie sa automaticky obnoví bez vytvorenia nového pripojenia, takže je veľmi užitočné v hernej aplikácii.
Chatová aplikácia: Chatovacie aplikácie používajú WebSockets na vytvorenie spojenia iba raz na výmenu, publikovanie a vysielanie správy medzi predplatiteľmi. Opätovne používa rovnaké pripojenie WebSocket na odosielanie a prijímanie správy a na prenos správ jeden na jedného.
Kedy nepoužívať WebSocket: WebSocket je možné použiť, ak chceme akékoľvek aktualizované alebo nepretržité toky údajov v reálnom čase, ktoré sa prenášajú cez sieť. Ak chceme získať staré údaje alebo chceme získať údaje iba raz, aby sme ich mohli spracovať pomocou aplikácie, mali by sme HTTP protokol , staré údaje, ktoré sa nevyžadujú veľmi často alebo sa načítavajú iba raz, môžu byť vyžiadané jednoduchou požiadavkou HTTP, takže v tomto scenári je lepšie nepoužívať WebSocket.
Poznámka: Webové služby RESTful postačujú na získanie údajov zo servera, ak údaje načítavame iba raz.
Rozdiely medzi HTTP a WebSocket pripojením:
| Pripojenie WebSocket | HTTP pripojenie |
|---|---|
| WebSocket je obojsmerný komunikačný protokol, ktorý dokáže odosielať údaje z klienta na server alebo zo servera na klienta opätovným použitím vytvoreného pripájacieho kanála. Pripojenie zostáva aktívne, kým ho neukončí klient alebo server. | Protokol HTTP je jednosmerný protokol, ktorý funguje nad protokolom TCP, čo je protokol transportnej vrstvy orientovaný na spojenie, môžeme vytvoriť spojenie pomocou metód požiadaviek HTTP po získaní odpovede, keď sa spojenie HTTP uzavrie. |
| Takmer všetky aplikácie v reálnom čase, ako sú (obchodné, monitorovacie, notifikačné) služby, využívajú WebSocket na príjem údajov na jedinom komunikačnom kanáli. | Jednoduchá aplikácia RESTful používa protokol HTTP, ktorý je bezstavový. |
| Všetky často aktualizované aplikácie používali WebSocket, pretože je rýchlejší ako pripojenie HTTP. | Keď nechceme zachovať pripojenie na určitý čas alebo opätovne použiť pripojenie na prenos údajov; HTTP pripojenie je pomalšie ako WebSockets. |
Poznámka: V závislosti od vášho projektu si musíte vybrať, kde to bude WebSocket alebo HTTP Connection.