Ce este WebSocket? - Metode și atribute ale WebSockets

Cuprins:

Anonim

Ce este WebSocket?

Imaginează-te scriind un e-mail către un prieten sau un coleg. Începi întotdeauna cu Bună, urmat de context și sfârșești cu o Mulțumire. Imaginează-ți acum același lucru cu prietenul / colegul tău având o conversație față în față. Ai mai începe fiecare text cu Hi și ați încheiat cu Mulțumiri? Un mare NU, nu? Asta însumează practic HTTP și WebSocket.

Înțelegere tehnică a WebSocket

Un WebSocket este un protocol de comunicare în două sensuri. Oferă o conexiune completă duplex. Să înțelegem cum acești termeni sunt semnificanți.

Privind înapoi la exemplul nostru de e-mailuri și conversații față în față, e-mailurile semnifică protocolul HTTP în timp ce conversațiile față în față semnifică protocolul WebSocket. Aceasta nu înseamnă că e-mailurile sunt trimise prin protocolul HTTP, nr. E-mailurile folosesc în mare parte protocoale SMTP, dar să nu ne facem griji pentru asta deocamdată. Expedierea esențială din exemplu este deschiderea și închiderea conexiunii de bază între cele două părți care fac schimb de informații.

HTTP schimbă informații prin deschiderea unei noi conexiuni la fiecare ciclu de solicitare-răspuns. Așadar, de fiecare dată când trimiteți o solicitare sau primiți un răspuns, HTTP stabilește o nouă conexiune. Gândiți-vă la o conexiune ca la o linie sigură pentru a transfera informații. Imediat ce informațiile dvs. sunt livrate, HTTP închide conexiunea.

WebSocket menține conexiunea deschisă pentru dvs., astfel încât să puteți schimba informații pe aceeași linie până când unul dintre voi închide conexiunea.

Un pic mai tehnic …

Bine, înțeleg că conexiunea este lăsată deschisă. Cum mă ajută? Nu simt nicio diferență dacă trimit e-mailuri sau trimit mesaje de chat.

Ai dreptate. Ca utilizator final, diferența nu vă este vizibilă. Să ne gândim ca un dezvoltator de aplicații. Când spun că deschideți o linie sigură pentru schimbul de informații, există un proces implicat în aceasta. Aceasta este de obicei denumită strângere de mână. Acesta este un proces prin care ambele mașini implicate într-o conversație sunt de acord să deschidă un port pentru a trimite și primi informații. Acum, aceste porturi sunt blocate unul pentru celălalt și nu pot fi utilizate pentru o a treia mașină.

Pentru strângerea de mână, protocolul HTTP trimite și primește câțiva octeți suplimentari doar pentru a confirma dacă un port este liber atât în ​​mașini, cât și preia detaliile portului. Acești octeți în plus sunt generali atunci când este necesar schimbul frecvent de informații. Prin urmare, WebSocket.

Când să utilizați WebSocket și când nu?

De departe, este evident că WebSocket este util numai atunci când este necesar schimbul frecvent de informații. WebSocket oferă o conexiune duplex. Aceasta înseamnă că informațiile pot fi trimise și primite în același timp. În mod evident, aceasta costă la blocarea portului până la schimbul de informații. Așadar, utilizarea WebSocket este un compromis între salvarea de octeți cruciali și care permite conversații mai rapide cu costul blocării unui port mai mult timp.

Cel mai bun caz de utilizare al WebSocket este atunci când aveți nevoie de date în timp real într-adevăr rapide, cum ar fi prețurile stocurilor. Prețurile acțiunilor se schimbă în fiecare secundă. Așadar, utilizarea HTTP ar pierde timpul crucial în strângerea de mână inutilă, iar ghilimele ar fi învechite. În schimb, utilizați WebSocket și faceți-o mai repede.

Contrar, dacă vă puteți permite o întârziere de câteva milisecunde în informațiile pe care le căutați, trebuie să mergeți pentru HTTP.

Cum a apărut WebSocket?

În zilele sale inițiale, Internetul era o rețea uriașă de pagini conținând informații textuale. Acestea erau în mare parte pagini statice, ceea ce însemna că informațiile erau constante și nu variau cu regăsirile ulterioare. În timp, conținutul bogat, cum ar fi imaginile, a devenit o parte indispensabilă a paginilor web. De asemenea, paginile au devenit dinamice, ceea ce a însemnat că acum informațiile din pagini pot fi generate pe baza interogărilor.

Acest lucru a dus la avansarea tehnologiilor cu inventarea HTML dinamic, JavaScript etc. Toate erau protocoale HTTP foarte avansate, dar utilizate. Problema cu protocoalele HTTP - conexiunea nu a fost duplexă. Comunicarea a fost unidirecțională. În orice moment al timpului, fie clientul poate trimite o solicitare către server, fie serverul poate răspunde.

Acest lucru a dat loc protocoalelor WebSocket care permit o conexiune full-duplex pentru a îmbunătăți experiența utilizatorului.

Înțelegerea termenului „Full-Duplex”

Am dat peste termenul full-duplex destul de mult. Ce înseamnă de fapt asta?

În HTTP, solicitarea este întotdeauna inițiată de client. Aceasta înseamnă că, dacă clientul nu trimite o solicitare, serverul nu va răspunde. Aceasta face ca comunicarea să fie unidirecțională.

În timp ce se află în WebSocket, atât clientul cât și serverul își pot împinge mesaje unul pe celălalt în același timp. Clientul nu trebuie să facă o solicitare de fiecare dată când cere un răspuns. Aceasta face ca conexiunea să fie bidirecțională.

Acum, pentru a atinge bi-direcționalitatea, trebuie să ne gândim că există două conexiuni menținute la fiecare moment al timpului. Aici WebSocket este diferit. WebSocket face acest lucru printr-o singură conexiune TCP. Aceasta este denumită conexiune full-duplex, adică comunicare bidirecțională pe un singur canal.

Atribute, evenimente și metode WebSocket

Să creăm o conexiune WebSocket. Următoarea comandă face acest lucru pentru noi:

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

Noua metodă WebSocket este metoda API expusă care returnează o conexiune stabilită cu adresa URL specificată ca prim parametru și aderând la un parametru de protocol opțional.

1. Atribute

Odată stabilită conexiunea, avem în obiectul Socket următoarele atribute:

i. Socket.readyState

Un atribut de numai citire care indică starea conexiunii.
0 - Conexiunea nu a fost încă stabilită.
1 - Conexiunea este stabilită, iar comunicarea este posibilă.
2 - Conexiunea trece printr-o strângere de mână.
3 - Conexiunea a fost închisă sau nu a putut fi deschisă.

ii. Socket.bufferedAmount

Un atribut de numai citire care indică numărul de octeți care sunt în coadă folosind metoda send ().

2. Evenimente

i. Socket.onOpen

Un eveniment a fost declanșat la deschiderea unei conexiuni.

ii. Socket.onMessage

Eveniment declanșat atunci când clientul primește un mesaj de la server.

iii. Socket.onError

Evenimentul a declanșat o eroare de comunicare.

iv. Socket.onClose

Evenimentul a declanșat atunci când o conexiune este închisă.

3. Metode

i. Socket.send (date)

Metoda de transmitere transmite datele folosind conexiunea.

ii. Socket.close ()

Această metodă încheie conexiunea existentă.

Exemplu

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

Exemplu din lumea reală

StackOverflow este un site web foarte popular care folosește WebSocket pentru a trimite notificări ori de câte ori un nou răspuns este disponibil la întrebare.

Articol recomandat

Acesta a fost un ghid pentru Ce este WebSocket? Aici am discutat Conceptele, definiția, atributele WebSocket, evenimentele și metodele de WebSocket. Puteți parcurge și alte articole sugerate pentru a afla mai multe -

  1. Este Hadoop Open Source?
  2. Ce este moștenirea Java?
  3. Ce este Multithreading în C #?
  4. Ce este ASP.Net Web Services?
  5. Crearea și metodele de multitratare în C #