logo

Kas ir tīmekļa ligzda un kā tā atšķiras no HTTP?

Gan HTTP, gan WebSocket ir sakaru protokoli, ko izmanto klienta un servera saziņā.

HTTP protokols: HTTP ir vienvirziena, kur klients nosūta pieprasījumu un serveris nosūta atbildi. Ņemsim piemēru, kad lietotājs nosūta pieprasījumu serverim šis pieprasījums tiek nosūtīts HTTP vai HTTPS formā, pēc pieprasījuma saņemšanas serveris nosūta atbildi klientam, katrs pieprasījums tiek saistīts ar atbilstošu atbildi, pēc atbildes nosūtīšanas savienojums tiek aizvērts, katrs HTTP vai HTTPS pieprasījums katru reizi izveido jaunu savienojumu ar serveri un pēc atbildes saņemšanas savienojums tiek pārtraukts pats par sevi.
HTTP ir bezvalsts protokols, kas darbojas virs TCP, kas ir uz savienojumu orientēts protokols, kas garantē datu pakešu pārsūtīšanu, izmantojot trīsvirzienu rokasspiediena metodes, un atkārtoti pārsūta pazaudētās paketes.



HTTP var darboties ar jebkuru uzticamu savienojumu orientētu protokolu, piemēram, TCP, SCTP. Kad klients nosūta serverim HTTP pieprasījumu, starp klientu un serveri tiek atvērts TCP savienojums un pēc atbildes saņemšanas TCP savienojums tiek pārtraukts, katrs HTTP pieprasījums atver atsevišķu TCP savienojumu ar serveri, piemēram, ja klients nosūta serverim 10 pieprasījumus, tiks atvērti 10 atsevišķi TCP savienojumi. un aizveriet pēc atbildes/atkāpšanās saņemšanas.

HTTP ziņojuma informācija kodēta ASCII, katrs HTTP pieprasījuma ziņojums sastāv no HTTP protokola versijas (HTTP/1.1, HTTP/2), HTTP metodes (GET/POST utt.), HTTP galvenes (satura veids, satura garums), resursdatora informācija utt. un pamattekstu, kurā ir faktiskais ziņojums, kas tiek pārsūtīts uz serveri. HTTP galvenes bija no 200 baitiem līdz 2 KB, parastais HTTP galvenes izmērs ir 700–800 baiti. Ja tīmekļa lietojumprogramma klienta pusē izmanto vairāk sīkfailu un citu rīku, kas paplašina aģenta krātuves līdzekļus, tā samazina HTTP galvenes lietderīgo slodzi.



WebSocket: WebSocket ir divvirzienu, pilna dupleksa protokols, kas tiek izmantots tajā pašā klienta un servera komunikācijas scenārijā, atšķirībā no HTTP tas sākas no ws:// vai wss:// . Tas ir statusa protokols, kas nozīmē, ka savienojums starp klientu un serveri paliks dzīvs, līdz to pārtrauks kāda no pusēm (klients vai serveris). Pēc klienta un servera savienojuma aizvēršanas savienojums tiek pārtraukts no abiem galiem.

java Būla virkne

Ņemsim klienta-servera komunikācijas piemēru, ir klients, kas ir tīmekļa pārlūkprogramma un serveris, ikreiz, kad mēs uzsākam savienojumu starp klientu un serveri, klients-serveris veica rokasspiedienu un nolemj izveidot jaunu savienojumu un šo savienojumu. paliks dzīvs, līdz kāds no tiem to pārtrauks. Kad savienojums ir izveidots un darbojas, saziņa notiek, izmantojot to pašu savienojuma kanālu, līdz tas tiek pārtraukts.

Tādā veidā pēc klienta-servera rokasspiediena klients-serveris izlemj par jaunu savienojumu, lai tas paliktu dzīvs. Šis jaunais savienojums būs pazīstams kā WebSocket. Kad sakaru saites izveide un savienojums ir atvērts, ziņojumu apmaiņa notiks divvirzienu režīmā, līdz saglabāsies savienojums starp klientu un serveri. Ja kāds no viņiem (klients-serveris) nomirst vai nolemj slēgt savienojumu, abas puses pārtrauc savienojumu. Veids, kādā ligzda darbojas, nedaudz atšķiras no tā, kā darbojas HTTP, statusa kods 101 apzīmē WebSocket pārslēgšanās protokolu.



Kad var izmantot tīmekļa ligzdu:

    Reāllaika tīmekļa lietojumprogramma: reāllaika tīmekļa lietojumprogramma izmanto tīmekļa ligzdu, lai klienta galā parādītu datus, kurus nepārtraukti sūta aizmugursistēmas serveris. Programmā WebSocket dati tiek nepārtraukti stumti/pārsūtīti tajā pašā savienojumā, kas jau ir atvērts, tāpēc WebSocket ir ātrāks un uzlabo lietojumprogrammas veiktspēju.
    Par piem. tirdzniecības vietnē vai bitcoin tirdzniecībā, lai parādītu cenu svārstības un kustības datus, aizmugursistēmas serveris nepārtraukti nosūta klienta galam, izmantojot WebSocket kanālu.
    Spēļu lietojumprogramma: Spēļu lietojumprogrammā varat koncentrēties uz to, serveri nepārtraukti saņem datus, un bez lietotāja interfeisa atsvaidzināšanas tie stāsies spēkā ekrānā, lietotāja interfeiss tiek automātiski atsvaidzināts, pat neizveidojot jaunu savienojumu, tāpēc ļoti noderīgs spēļu lietojumprogrammā.
    Tērzēšanas lietojumprogramma: tērzēšanas lietojumprogrammas izmanto WebSockets, lai izveidotu savienojumu tikai vienu reizi, lai apmainītos, publicētu un pārraidītu ziņojumu starp abonentiem. Tas atkārtoti izmanto to pašu WebSocket savienojumu, lai nosūtītu un saņemtu ziņojumu, kā arī ziņojumu pārsūtīšanai viens pret vienu.

Kad neizmantot WebSocket: WebSocket var izmantot, ja vēlamies reāllaikā atjauninātas vai nepārtrauktas datu plūsmas, kas tiek pārsūtītas tīklā. Ja mēs vēlamies ienest vecos datus vai vēlamies iegūt datus tikai vienu reizi, lai tos apstrādātu ar lietojumprogrammu, kas mums jāizmanto HTTP protokols , vecos datus, kas nav nepieciešami ļoti bieži vai ienes tikai vienu reizi, var vaicāt, izmantojot vienkāršu HTTP pieprasījumu, tāpēc šajā gadījumā labāk neizmantot WebSocket.

Piezīme: RESTful tīmekļa pakalpojumi ir pietiekami, lai iegūtu datus no servera, ja mēs ielādējam datus tikai vienu reizi.

Atšķirības starp HTTP un WebSocket savienojumu:

WebSocket savienojums HTTP savienojums
WebSocket ir divvirzienu sakaru protokols, kas var nosūtīt datus no klienta uz serveri vai no servera uz klientu, atkārtoti izmantojot izveidoto savienojuma kanālu. Savienojums tiek uzturēts līdz brīdim, kad to pārtrauc klients vai serveris. HTTP protokols ir vienvirziena protokols, kas darbojas virs TCP protokola, kas ir uz savienojumu orientēts transporta slāņa protokols, mēs varam izveidot savienojumu, izmantojot HTTP pieprasījuma metodes pēc atbildes saņemšanas, kad HTTP savienojums tiek aizvērts.
Gandrīz visas reāllaika lietojumprogrammas, piemēram, (tirdzniecības, uzraudzības, paziņošanas) pakalpojumi, izmanto WebSocket, lai saņemtu datus vienā sakaru kanālā. Vienkāršā RESTful lietojumprogramma izmanto HTTP protokolu, kas ir bezvalsts.
Visas bieži atjauninātās lietojumprogrammas izmantoja WebSocket, jo tas ir ātrāks par HTTP savienojumu. Ja mēs nevēlamies saglabāt savienojumu noteiktu laiku vai atkārtoti izmantot savienojumu datu pārsūtīšanai; HTTP savienojums ir lēnāks nekā WebSockets.

Piezīme: Atkarībā no jūsu projekta jums ir jāizvēlas, kur tas būs WebSocket vai HTTP savienojums.