Co je to WebSocket? - Metody a atributy WebSockets

Obsah:

Anonim

Co je to WebSocket?

Představte si, jak píšete e-mail příteli nebo kolegovi. Vždy začínáte s Ahoj, následuje kontext a končí poděkováním. Teď si představte to samé, že vy a váš přítel / kolega konverzujete tváří v tvář. Začali byste stále každý svůj text s Ahoj a končili díky? Velké NE, že? To prakticky shrnuje HTTP a WebSocket.

Technické porozumění WebSocket

WebSocket je obousměrný komunikační protokol. Poskytuje plné duplexní připojení. Chápeme, jak jsou tyto výrazy významné.

Když se podíváme zpět na náš příklad e-mailů a osobních rozhovorů, e-maily označují protokol HTTP, zatímco osobní rozhovory označují protokol WebSocket. To neznamená, že e-maily jsou odesílány prostřednictvím protokolu HTTP, ne. E-maily většinou používají protokoly SMTP, ale nedělejme si s tím starosti. Základním krokem z příkladu je otevření a uzavření základního spojení mezi oběma stranami, které si vyměňují informace.

HTTP si vyměňuje informace otevřením nového připojení v každém cyklu požadavek-odpověď. Takže pokaždé, když odešlete požadavek nebo obdržíte odpověď, HTTP naváže nové připojení. Představte si připojení jako jednoduše zabezpečenou linku pro přenos informací. Jakmile jsou vaše informace doručeny, HTTP ukončí připojení.

WebSocket udržuje připojení otevřené pro vás, takže si můžete vyměňovat informace na stejném řádku, dokud jeden z vás připojení nezruší.

Trochu více technické…

Dobře, chápu to všechno o tom, že spojení zůstalo otevřené. Jak mi to pomůže? Necítím žádný rozdíl, zda posílám e-maily nebo posílám chatové zprávy.

Máš pravdu. Jako koncový uživatel není rozdíl viditelný. Pojďme myslet jako vývojář aplikací. Když řeknu, že mám otevřenou bezpečnou linku pro výměnu informací, jedná se o proces. Toto se běžně označuje jako Handshaking. Jedná se o proces, při kterém se oba stroje zapojené do konverzace dohodnou na otevření portu pro odesílání a přijímání informací. Nyní jsou tyto porty vzájemně blokovány a nelze je použít pro třetí stroj.

Pro handshaking protokol HTTP odesílá a přijímá některé další bajty, jen aby potvrdil, zda je port volný v počítačích, a načte podrobnosti o portu. Tyto zvláštní bajty představují režii, pokud je vyžadována častá výměna informací. Proto WebSocket.

Kdy použít WebSocket a kdy ne?

Je zjevné, že WebSocket je užitečný pouze tehdy, když je vyžadována častá výměna informací. WebSocket poskytuje duplexní připojení. To znamená, že informace lze odesílat a přijímat současně. To samozřejmě stojí za cenu blokování portu, dokud se nevymění informace o čase. Používání WebSocket je tedy kompromisem mezi uložením důležitých bajtů a umožněním rychlejších konverzací za cenu delšího blokování portu.

Nejlepší případ použití WebSocket je, když potřebujete data v reálném čase opravdu rychle, například ceny akcií. Ceny akcií se mění každou sekundu. Použití protokolu HTTP by tedy zbytečně zbytečně zabralo zbytečný handshaking a uvozovky by byly zastaralé. Místo toho použijte WebSocket a udělejte to rychleji.

Naopak, pokud si můžete v informacích, které hledáte, dovolit zpoždění o několik milisekund, musíte jít na HTTP.

Jak vznikl WebSocket?

V počátečních dnech byl internet obrovskou sítí stránek obsahujících textové informace. Jednalo se většinou o statické stránky, což znamenalo, že informace byla konstantní a neměnila se s následným vyhledáváním. Časem se bohatý obsah, jako jsou obrázky, stal nepostradatelnou součástí webových stránek. Stránky se také staly dynamickými, což znamenalo, že nyní by mohly být informace na stránkách generovány na základě dotazů.

To vedlo k pokroku v technologiích s vynálezem Dynamic HTML, JavaScript, atd. Všichni byli velmi pokročilí, ale používali protokoly HTTP. Problém s protokoly HTTP - připojení nebylo duplexní. Komunikace byla jednosměrná. Klient může kdykoli odeslat požadavek na server nebo server může odpovědět.

Tím se uvolnily protokoly WebSocket umožňující plně duplexní připojení, které zvyšuje uživatelský komfort.

Porozumění pojmu „full-duplex“

Výrazem full-duplex jsme se hodně potkali. Co to vlastně znamená?

V HTTP je požadavek vždy iniciován klientem. To znamená, že pokud klient neodešle požadavek, server neodpoví. Díky tomu je komunikace jednosměrná.

V prostředí WebSocket mohou klient i server vzájemně posílat zprávy současně. Klient nemusí podat žádost pokaždé, když to vyžaduje určitou odpověď. Díky tomu je připojení obousměrné.

Abychom dosáhli obousměrnosti, musíme si myslet, že v každém okamžiku jsou udržována dvě spojení. Zde se liší WebSocket. WebSocket to provádí prostřednictvím jediného připojení TCP. Toto se nazývá plně duplexní připojení, což znamená obousměrnou komunikaci přes jeden kanál.

Atributy, události a metody WebSocket

Vytvořme připojení WebSocket. Následující příkaz to udělá za nás:

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

Nová metoda WebSocket je metoda vystaveného rozhraní API, která vrací navázané spojení s adresou URL určenou jako první parametr a dodržující volitelný parametr protokolu.

1. Atributy

Po navázání spojení máme v našem objektu Socket následující atributy:

i. Socket.readyState

Atribut jen pro čtení, který informuje o stavu připojení.
0 - Připojení dosud nebylo navázáno.
1 - Je navázáno spojení a je možná komunikace.
2 - Připojení probíhá přes handshake.
3 - Spojení bylo uzavřeno nebo nemohlo být otevřeno.

ii. Socket.bufferedAmount

Atribut jen pro čtení, který sděluje počet bytů ve frontě pomocí metody send ().

2. Události

i. Socket.onOpen

Událost spuštěná při otevření spojení.

ii. Socket.onMessage

Událost spuštěná, když klient obdrží zprávu ze serveru.

iii. Socket.onError

Událost vyvolala chybu v komunikaci.

iv. Socket.onClose

Událost se spouští při uzavření spojení.

3. Metody

i. Socket.send (data)

Metoda odeslání přenáší data pomocí připojení.

ii. Socket.close ()

Tato metoda ukončí existující připojení.

Pří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( );
)

Příklad ze skutečného světa

StackOverflow je velmi populární web, který používá WebSocket k zasílání oznámení, kdykoli je na otázku k dispozici nová odpověď.

Doporučený článek

Toto byl průvodce Co je to WebSocket? Zde jsme diskutovali o koncepcích, definicích, atributech WebSocket, událostech a metodách WebSocket. Další informace naleznete také v dalších navrhovaných článcích -

  1. Je Hadoop Open Source?
  2. Co je dědičnost Java?
  3. Co je multithreading v C #?
  4. Co jsou ASP.Net webové služby?
  5. Tvorba a metody multithreadingu v C #