Čo je to WebSocket? - Metódy a atribúty WebSockets

Obsah:

Anonim

Čo je to WebSocket?

Predstavte si, že píšete e-mail priateľovi alebo kolegovi. Vždy začínate s Ahoj, nasledovaný kontextom a končíte s poďakovaním. Teraz si predstavte to isté, že vy a váš priateľ / kolega máte osobný rozhovor. Začali by ste stále každý svoj text pomocou Ahoj a končili vďaka? Veľké NIE, však? To prakticky zhŕňa HTTP a WebSocket.

Technické porozumenie WebSocket

WebSocket je obojsmerný komunikačný protokol. Poskytuje plné duplexné pripojenie. Pochopme, aký význam majú tieto výrazy.

Keď sa pozrieme späť na náš príklad e-mailov a osobných rozhovorov, e-maily označujú protokol HTTP, zatiaľ čo osobné rozhovory označujú protokol WebSocket. To neznamená, že e-maily sa odosielajú prostredníctvom protokolu HTTP, nie. V e-mailoch sa väčšinou používajú protokoly SMTP, ale netrápte sa tým. Podstatným príkladom je otvorenie a zatvorenie základného spojenia medzi oboma stranami, ktoré si vymieňajú informácie.

HTTP si vymieňa informácie otvorením nového spojenia v každom cykle požiadavka-odpoveď. Preto pri každom odoslaní žiadosti alebo prijatí odpovede vytvorí HTTP nové pripojenie. Považujte pripojenie za jednoducho zabezpečenú linku na prenos informácií. Hneď ako sú vaše informácie doručené, HTTP ukončí pripojenie.

WebSocket udržuje pripojenie otvorené, aby ste si mohli vymieňať informácie cez ten istý riadok, kým ho jeden z vás nezruší.

Trochu viac technickej …

Dobre, chápem to všetko o spojení, ktoré zostalo otvorené. Ako mi to pomáha? Necítim žiadny rozdiel, či už posielam e-maily alebo posielajú správy z chatu.

Máš pravdu. Ako koncový používateľ nie je rozdiel viditeľný. Zamyslime sa ako vývojár aplikácií. Keď poviem, že máte otvorenú bezpečnú linku na výmenu informácií, je to proces. Toto sa bežne označuje ako Handshaking. Toto je proces, pri ktorom sa obe zariadenia zúčastnené na konverzácii dohodnú na otvorení prístavu na odosielanie a prijímanie informácií. Teraz sú tieto porty navzájom blokované a nemôžu sa použiť pre tretí počítač.

Na nadviazanie spojenia protokol HTTP odosiela a prijíma niektoré ďalšie bajty len na potvrdenie, či je port voľný v strojoch, a načíta podrobnosti o porte. Tieto ďalšie bajty sú réžiou, keď sa vyžaduje častá výmena informácií. Preto WebSocket.

Kedy používať WebSocket a kedy nie?

Je zrejmé, že WebSocket je užitočný iba vtedy, keď sa vyžaduje častá výmena informácií. WebSocket poskytuje duplexné pripojenie. To znamená, že informácie je možné odosielať a prijímať súčasne. To samozrejme stojí za náklady na zablokovanie prístavu, kým sa nevymieňajú informácie o čase. Používanie WebSocket je kompromisom medzi uložením dôležitých bajtov a umožnením rýchlejšej konverzácie za cenu dlhšieho blokovania portu.

Najlepším prípadom použitia WebSocket je, keď potrebujete údaje v reálnom čase skutočne rýchle, napríklad ceny akcií. Ceny akcií sa menia každú sekundu. Použitie protokolu HTTP by zbytočne zbytočne zbytočne trvalo zbytočne zbytočné nadviazanie kontaktov a citácie by boli zastaralé. Namiesto toho použite WebSocket a urobte to rýchlejšie.

Naopak, ak si môžete dovoliť oneskorenie pri hľadaní informácií o niekoľko milisekúnd, musíte ísť na HTTP.

Ako vznikol WebSocket?

V počiatočných dňoch bol internet obrovskou sieťou stránok obsahujúcich textové informácie. Jednalo sa väčšinou o statické stránky, čo znamenalo, že informácie boli konštantné a pri ďalších vyhľadávaniach sa nemenili. Časom sa bohatý obsah, napríklad obrázky, stal nevyhnutnou súčasťou webových stránok. Stránky sa tiež stali dynamickými, čo znamenalo, že teraz by sa informácie na stránkach mohli generovať na základe dopytov.

To viedlo k pokroku v technológiách s vynálezom Dynamic HTML, JavaScript, atď. Všetci boli veľmi pokročilí, ale používali protokoly HTTP. Problém s protokolmi HTTP - pripojenie nebolo duplexné. Komunikácia bola jednosmerná. Klient môže kedykoľvek odoslať požiadavku na server alebo server môže odpovedať.

Tým sa umožnili protokoly WebSocket, ktoré umožňujú plne duplexné pripojenie, aby sa zvýšila používateľská skúsenosť.

Pochopenie termínu „full-duplex“

Termín „full-duplex“ sa stretávame dosť často. Čo to vlastne znamená?

V HTTP je požiadavka vždy iniciovaná klientom. To znamená, že pokiaľ klient neodošle žiadosť, server neodpovedá. Vďaka tomu je komunikácia jednosmerná.

V serveri WebSocket môžu klient a server navzájom tlačiť správy. Klient nemusí podať žiadosť vždy, keď to vyžaduje určitú odpoveď. Vďaka tomu je spojenie obojsmerné.

Aby sme dosiahli obojsmernosť, musíme si myslieť, že v každom časovom okamihu sú udržiavané dve spojenia. Tu sa WebSocket líši. WebSocket to robí prostredníctvom jediného pripojenia TCP. Toto sa označuje ako plne duplexné spojenie, čo znamená obojsmernú komunikáciu cez jeden kanál.

Atribúty, udalosti a metódy WebSocket

Vytvorme spojenie WebSocket. Nasledujúci príkaz to robí za nás:

var Socket = new WebSocket (URL, (protocal));

Nová metóda WebSocket je vystavená metóda API, ktorá vracia nadviazané spojenie s adresou URL zadanou ako prvý parameter a priraďuje sa voliteľnému parametru protokolu.

1. Atribúty

Po nadviazaní spojenia máme v našom objekte Socket nasledujúce atribúty:

i. Socket.readyState

Atribút len ​​na čítanie, ktorý informuje o stave pripojenia.
0 - Spojenie ešte nebolo nadviazané.
1 - Spojenie je nadviazané a komunikácia je možná.
2 - Spojenie prechádza podaním ruky.
3 - Spojenie bolo zatvorené alebo sa nepodarilo otvoriť.

ii. Socket.bufferedAmount

Atribút len ​​na čítanie, ktorý určuje počet bajtov, ktoré sú zaradené do frontu pomocou metódy send ().

2. Udalosti

i. Socket.onOpen

Udalosť spustená pri otvorení spojenia.

ii. Socket.onMessage

Udalosť spustená, keď klient dostane správu zo servera.

iii. Socket.onError

Udalosť vyvolala chybu v komunikácii.

iv. Socket.onClose

Udalosť sa spustí, keď je spojenie ukončené.

3. Metódy

i. Socket.send (dáta)

Metóda odoslania prenáša údaje pomocou pripojenia.

ii. Socket.close ()

Táto metóda ukončí existujúce pripojenie.

príklad

var socket = new WebSocket(“ ws://echo.websocket.org ”);
if (socket.readyState === WebSocket.OPEN)(
socket.send(“Hello World”);
)
if (socket.readyState === WebSocket.OPEN)(
socket.close( );
)

Príklad z reálneho sveta

StackOverflow je veľmi populárna webová stránka, ktorá využíva WebSocket na zasielanie upozornení vždy, keď je na túto otázku k dispozícii nová odpoveď.

Odporúčaný článok

Toto bol návod na Čo je WebSocket? Tu sme diskutovali o konceptoch, definícii, atribútoch WebSocket, udalostiach a metódach WebSocket. Viac informácií nájdete aj v ďalších navrhovaných článkoch -

  1. Je Hadoop Open Source?
  2. Čo je dedičstvo Java?
  3. Čo je multithreading v jazyku C #?
  4. Čo sú webové služby ASP.Net?
  5. Tvorba a metódy multithreadingu v C #