Mikä on WebSocket?
Kuva itse kirjoittamalla sähköpostia ystävälle tai kollegalle. Aloitat aina Hi: llä, jota seuraa konteksti ja päätät kiitoksella. Kuvittele nyt sama sinä ja ystäväsi / kollegasi keskustelemalla kasvotusten. Aloittaisitko jokaisen tekstin vielä Heillä ja lopetat kiitoksella? Iso EI, eikö niin? Se käytännössä tiivistää HTTP: n ja WebSocketin.
WebSocketin tekninen ymmärtäminen
WebSocket on kaksisuuntainen viestintäprotokolla. Se tarjoaa kaksipuolisen yhteyden. Ymmärrämme kuinka nämä termit ovat merkittäviä.
Kun tarkastellaan esimerkkejä sähköposteista ja henkilökohtaisista keskusteluista, sähköpostit tarkoittavat HTTP-protokollaa, kun taas kasvotus keskusteluista tarkoittavat WebSocket-protokollaa. Tämä ei tarkoita, että sähköpostit lähetetään HTTP-protokollan kautta, ei. Sähköpostiviestit käyttävät enimmäkseen SMTP-protokollia, mutta älä ole huolissamme siitä toistaiseksi. Olennainen poistuminen esimerkistä on taustalla olevan yhteyden avaaminen ja sulkeminen kahden tietojen vaihtavan osapuolen välillä.
HTTP vaihtaa tietoja avaamalla uuden yhteyden jokaisessa pyyntö-vastaus -jaksossa. Joten aina, kun lähetät pyynnön tai vastauksen, HTTP muodostaa uuden yhteyden. Ajattele yhteyttä yksinkertaisesti turvallisena linjana tiedon siirtämiseen. Heti kun tietosi toimitetaan, HTTP sulkee yhteyden.
WebSocket pitää yhteyden auki sinulle, jotta voit vaihtaa tietoja saman linjan kautta, kunnes yksi sinusta sulkee yhteyden.
Hieman tekninen …
Okei, saan kaiken siitä, että yhteys on avoinna. Kuinka se auttaa minua? Minusta ei ole eroa lähettääkö sähköpostia tai chat-viestejä.
Olet oikeassa. Loppukäyttäjänä ero ei ole näkyvissä sinulle. Ajattelemme kuten sovelluskehittäjää. Kun sanon, että avaa turvallinen linja tiedonvaihtoon, siihen liittyy prosessi. Tätä kutsutaan yleisesti kättelyksi. Tämä on prosessi, jossa molemmat keskusteluun osallistuvat koneet sopivat avaavansa portin tiedon lähettämistä ja vastaanottamista varten. Nyt nämä portit on estetty toisilleen, eikä niitä voida käyttää kolmannessa koneessa.
Käden kättelyä varten HTTP-protokolla lähettää ja vastaanottaa joitain ylimääräisiä tavuja vain varmistaaksesi, onko portti molemmissa koneissa vapaa ja noutaa portin yksityiskohdat. Nämä ylimääräiset tavut ovat yleiskustannuksia, kun vaaditaan usein tiedonvaihtoa. Siksi WebSocket.
Milloin WebSocketia käytetään ja milloin ei?
Ylivoimaisesti on selvää, että WebSocket on hyödyllinen vain silloin, kun vaaditaan usein tiedonvaihtoa. WebSocket tarjoaa kaksipuolisen yhteyden. Tämä tarkoittaa, että tiedot voidaan lähettää ja vastaanottaa samanaikaisesti. Tämä tapahtuu tietysti sataman estämisellä siihen asti, kun tietoja vaihdetaan. Joten WebSocketin käyttö on kompromissi tärkeiden tavujen tallentamisen ja nopeampien keskustelujen mahdollistamisen välillä sataman pidemmän estämisen kustannuksella.
Paras WebSocket-tapaus on, kun tarvitset reaaliaikaista tietoa todella nopeasti, kuten osakekurssit. Osakehinnat muuttuvat joka sekunti. Joten HTTP: n käyttäminen tuhlaa ratkaisevaa aikaa tarpeettomaan kättelyyn ja lainaukset takertuvat. Käytä sen sijaan WebSocketia ja tee se nopeammin.
Päinvastoin, jos sinulla on varaa muutaman millisekunnin viiveellä etsimissäsi tiedoissa, sinun on suoritettava HTTP.
Kuinka WebSocket syntyi?
Alkuaikoinaan Internet oli jättiläinen sivuverkosto, joka sisälsi tekstitietoja. Nämä olivat enimmäkseen staattisia sivuja, mikä tarkoitti, että tieto oli vakio eikä muuttunut myöhempien hakujen yhteydessä. Ajan myötä rikkaasta sisällöstä, kuten kuvista, tuli välttämätön osa verkkosivuja. Sivut muuttuivat myös dynaamisiksi, mikä tarkoitti, että nyt sivujen tiedot voidaan tuottaa kyselyiden perusteella.
Tämä johti tekniikan kehitykseen keksimällä dynaamista HTML: tä, JavaScriptiä jne. He olivat kaikki hyvin edistyneitä, mutta käyttivät HTTP-protokollia. Ongelma HTTP-protokollien kanssa - yhteys ei ollut kaksipuolinen. Viestintä oli yksisuuntaista. Missä tahansa vaiheessa joko asiakas voi lähettää pyynnön palvelimelle tai palvelin voi vastata.
Tämä antoi tietä WebSocket-protokollille, joka mahdollistaa kaksipuolisen yhteyden käyttökokemuksen parantamiseksi.
Termin 'Kaksipuolinen' ymmärtäminen
Olemme tulleet melko paljon käsitteelle full-duplex. Mitä tämä oikeasti tarkoittaa?
HTTP-muodossa asiakas aloittaa aina pyynnön. Tämä tarkoittaa, että ellei asiakas lähetä pyyntöä, palvelin ei vastaa. Tämä tekee viestinnästä yksisuuntaisen.
WebSocketissa ollessaan, sekä asiakas että palvelin voivat työntää viestejä toisilleen samanaikaisesti. Asiakkaan ei tarvitse tehdä pyyntöä joka kerta, kun se vaatii vastausta. Tämä tekee yhteydestä kaksisuuntaisen.
Nyt kaksisuuntaisuuden saavuttamiseksi on ajateltava, että jokaisessa ajankohdassa on kaksi yhteyttä. Tässä WebSocket on erilainen. WebSocket tekee tämän yhdellä TCP-yhteydellä. Tätä kutsutaan täysdupleksiyhteydeksi, joka tarkoittaa kaksisuuntaista viestintää yhden kanavan kautta.
WebSocket-määritteet, tapahtumat ja menetelmät
Luodaan WebSocket-yhteys. Seuraava komento tekee tämän meille:
var Socket = uusi WebSocket (URL, (protocal));
Uusi WebSocket-menetelmä on paljastettu API-menetelmä, joka palauttaa vakiintuneen yhteyden ensimmäiseksi parametriksi määritettyyn URL-osoitteeseen ja valinnaisen protokollaparametrin noudattamiseen.
1. Ominaisuudet
Kun yhteys on muodostettu, Socket-objektissamme on seuraavat määritteet:
i. Socket.readyState
Vain luku -ominaisuus, joka kertoo yhteyden tilan.
0 - yhteyttä ei ole vielä muodostettu.
1 - Yhteys on muodostettu, ja viestintä on mahdollista.
2 - Yhteys käy läpi kädenpuristuksen.
3 - Yhteys on suljettu tai sitä ei voitu avata.
ii. Socket.bufferedAmount
Vain luku -ominaisuus, joka kertoo tavujen lukumäärän, jotka on jonossa send () -menetelmällä.
2. Tapahtumat
i. Socket.onOpen
Tapahtuma laukaisee, kun yhteys avataan.
ii. Socket.onMessage
Tapahtuma laukaisee, kun asiakas vastaanottaa viestin palvelimelta.
iii. Socket.onError
Tapahtuma laukaisi virheen viestinnässä.
iv. Socket.onClose
Tapahtuma käynnistyi, kun yhteys on suljettu.
3. Menetelmät
i. Socket.send (data)
Lähetystapa lähettää tiedot yhteyden kautta.
ii. Socket.close ()
Tämä menetelmä lopettaa olemassa olevan yhteyden.
esimerkki
var socket = new WebSocket(“ ws://echo.websocket.org ”);
if (socket.readyState === WebSocket.OPEN)(
socket.send(“Hello World”);
)
if (socket.readyState === WebSocket.OPEN)(
socket.close( );
)
Oikean maailman esimerkki
StackOverflow on erittäin suosittu verkkosivusto, joka käyttää WebSocketia ilmoituksen siirtämiseen aina, kun kysymykseen on saatavana uusi vastaus.
Suositeltava artikkeli
Tämä on opas Mikä on WebSocket? Tässä keskustelimme WebSocketin käsitteistä, määritelmistä, WebSocket-määritteistä, tapahtumista ja menetelmistä. Voit myös käydä läpi muiden ehdotettujen artikkeleidemme saadaksesi lisätietoja -
- Onko Hadoop avoimen lähdekoodin?
- Mikä on Java-perintö?
- Mikä on monisäikeinen C #: ssä?
- Mikä on ASP.Net Web Services?
- Luominen ja menetelmät monisäikeistämiseen C #: ssä