HTTP ir WebSocket yra ryšio protokolai, naudojami kliento ir serverio ryšiui.
HTTP protokolas: HTTP yra vienakryptis, kai klientas siunčia užklausą, o serveris siunčia atsakymą. Paimkime pavyzdį, kai vartotojas siunčia užklausą serveriui, ši užklausa eina HTTP arba HTTPS forma, gavęs užklausą serveris išsiunčia atsakymą klientui, kiekviena užklausa susiejama su atitinkamu atsakymu, išsiuntus atsakymą ryšys užsidaro, kiekviena HTTP arba HTTPS užklausa kaskart užmezga naują ryšį su serveriu ir gavus atsakymą ryšys nutrūksta savaime.
HTTP yra protokolas be būsenos, veikiantis ant TCP, kuris yra į ryšį orientuotas protokolas, užtikrinantis duomenų paketų perdavimą naudojant trijų krypčių rankų paspaudimo metodus ir pakartotinai perduodamas prarastus paketus.
HTTP gali veikti naudojant bet kokį patikimą ryšį orientuotą protokolą, pvz., TCP, SCTP. Kai klientas siunčia serveriui HTTP užklausą, tarp kliento ir serverio atidaromas TCP ryšys ir gavus atsakymą TCP ryšys nutrūksta, kiekviena HTTP užklausa atidaro atskirą TCP ryšį su serveriu, pvz. jei klientas serveriui išsiųs 10 užklausų, atsidarys 10 atskirų TCP jungčių. ir užsidaryti gavę atsakymą/atsarginį variantą.
HTTP pranešimo informacija užkoduota ASCII, kiekvieną HTTP užklausos pranešimą sudaro HTTP protokolo versija (HTTP/1.1, HTTP/2), HTTP metodai (GET/POST ir kt.), HTTP antraštės (turinio tipas, turinio ilgis), pagrindinio kompiuterio informacija ir kt. ir tekstas, kuriame yra tikrasis į serverį perduodamas pranešimas. HTTP antraštės svyravo nuo 200 baitų iki 2 KB, įprastas HTTP antraštės dydis yra 700–800 baitų. Kai žiniatinklio programa naudoja daugiau slapukų ir kitų kliento įrankių, kurie išplečia agento saugojimo funkcijas, sumažina HTTP antraštės naudingumą.

WebSocket: „WebSocket“ yra dvikryptis, pilnas dvipusis protokolas, naudojamas tame pačiame kliento ir serverio ryšio scenarijuje, skirtingai nei HTTP, jis prasideda nuo ws:// arba wss:// . Tai yra būsenos protokolas, o tai reiškia, kad ryšys tarp kliento ir serverio veiks tol, kol jį nutrauks bet kuri šalis (klientas arba serveris). Klientui ir serveriui uždarius ryšį, ryšys nutraukiamas iš abiejų galų.
javac neatpažįstamas
Paimkime kliento ir serverio komunikacijos pavyzdį, yra klientas, kuris yra žiniatinklio naršyklė ir serveris, kai tik inicijuojame ryšį tarp kliento ir serverio, klientas-serveris paspaudė rankas ir nusprendžia sukurti naują ryšį ir šį ryšį. išliks gyvas, kol bet kuris iš jų jį nutrauks. Kai ryšys yra užmegztas ir gyvas, ryšys vyksta tuo pačiu ryšio kanalu, kol jis nutraukiamas.
Taip po kliento ir serverio rankų paspaudimo klientas ir serveris nusprendžia dėl naujo ryšio, kad jis išliktų gyvas. Šis naujas ryšys bus žinomas kaip WebSocket. Kai bus atidarytas ryšio ryšys ir ryšys, apsikeitimas pranešimais vyks dvikrypčiu režimu, kol ryšys tarp kliento ir serverio išliks. Jei kuris nors iš jų (klientas-serveris) miršta arba nusprendžia uždaryti ryšį, abi šalys nutraukia ryšį. Socket veikimo būdas šiek tiek skiriasi nuo HTTP veikimo, būsenos kodas 101 žymi perjungimo protokolą WebSocket.

Kada galima naudoti žiniatinklio lizdą:
- Realaus laiko žiniatinklio programa: realaus laiko žiniatinklio programa naudoja žiniatinklio lizdą, kad būtų rodomi duomenys kliento gale, kuriuos nuolat siunčia galinis serveris. „WebSocket“ duomenys nuolat stumiami / perduodami į tą patį jau atidarytą ryšį, todėl „WebSocket“ yra greitesnis ir pagerina programos našumą.
Dėl pvz. prekybos svetainėje arba bitkoinų prekyboje, kad būtų rodomi kainų svyravimai ir judėjimo duomenys, backend serveris nuolat siunčiamas į klientą naudojant WebSocket kanalą.
Žaidimų programa: Žaidimų programoje galite sutelkti dėmesį į tai, serveris nuolat gauna duomenis, o neatnaujinus vartotojo sąsajos jie įsigalios ekrane, vartotojo sąsaja automatiškai atnaujinama net neužmezgus naujo ryšio, todėl labai naudinga žaidimų programoje.
Pokalbių programa: pokalbių programos naudoja „WebSockets“, kad užmegztų ryšį tik vieną kartą, kad būtų galima keistis, skelbti ir transliuoti pranešimą tarp abonentų. Jis pakartotinai naudoja tą patį „WebSocket“ ryšį, siųsdamas ir gaudamas pranešimą bei perduodamas „vienas su vienu“.
Kada nenaudoti „WebSocket“: „WebSocket“ galima naudoti, jei norime bet kokių realiu laiku atnaujinamų arba nuolatinių duomenų srautų, kurie perduodami tinklu. Jei norime gauti senus duomenis arba norime gauti duomenis tik vieną kartą, kad galėtume juos apdoroti programa, turėtume naudoti HTTP protokolas , senus duomenis, kurių nereikia labai dažnai arba gauti tik vieną kartą, galima pateikti naudojant paprastą HTTP užklausą, todėl šiuo atveju geriau nenaudoti „WebSocket“.
Pastaba: RESTful interneto paslaugų pakanka norint gauti duomenis iš serverio, jei duomenis įkeliame tik vieną kartą.
HTTP ir WebSocket ryšio skirtumai:
| „WebSocket“ ryšys | HTTP ryšys |
|---|---|
| „WebSocket“ yra dvikrypčio ryšio protokolas, galintis siųsti duomenis iš kliento į serverį arba iš serverio klientui, pakartotinai naudojant nustatytą ryšio kanalą. Ryšys palaikomas tol, kol jį nutraukia klientas arba serveris. | HTTP protokolas yra vienakryptis protokolas, veikiantis virš TCP protokolo, kuris yra į ryšį orientuotas transporto sluoksnio protokolas, ryšį galime sukurti naudodami HTTP užklausos metodus, kai gausime atsakymą, kai HTTP ryšys bus uždarytas. |
| Beveik visos realaus laiko programos, tokios kaip (prekybos, stebėjimo, pranešimų) paslaugos, naudoja WebSocket duomenims gauti vienu ryšio kanalu. | Paprasta RESTful programa naudoja HTTP protokolą, kuris yra be būsenos. |
| Visos dažnai atnaujinamos programos naudojo „WebSocket“, nes ji yra greitesnė už HTTP ryšį. | Kai nenorime išlaikyti ryšio tam tikrą laiką arba pakartotinai naudoti ryšį duomenims perduoti; HTTP ryšys yra lėtesnis nei WebSockets. |
Pastaba: Priklausomai nuo projekto, turite pasirinkti, kur jis bus „WebSocket“ arba HTTP ryšys.