Wat is WebSocket? - Methoden en attributen van WebSockets

Inhoudsopgave:

Anonim

Wat is WebSocket?

Stel je voor dat je een e-mail schrijft aan een vriend of collega. Je begint altijd met Hallo, gevolgd door de context en eindigt met een bedankt. Stel je nu hetzelfde voor als jij en je vriend / collega die een persoonlijk gesprek hebben. Wilt u nog steeds elk van uw tekst beginnen met Hallo en eindigen met Bedankt? Een grote NEE, toch? Dat is praktisch een samenvatting van HTTP en WebSocket.

Technisch begrip van WebSocket

Een WebSocket is een tweerichtingscommunicatieprotocol. Het biedt een volledige duplex-verbinding. Laten we begrijpen hoe deze termen belangrijk zijn.

Terugkijkend op ons voorbeeld van e-mails en face-to-face-gesprekken, betekenen e-mails HTTP-protocol, terwijl face-to-face-gesprekken WebSocket-protocol betekenen. Dit betekent niet dat e-mails worden verzonden via het HTTP-protocol, nee. E-mails gebruiken meestal SMTP-protocollen, maar laten we ons daar nu geen zorgen over maken. Het essentiële voordeel van het voorbeeld is het openen en sluiten van de onderliggende verbinding tussen de twee partijen die informatie uitwisselen.

HTTP wisselt informatie uit door een nieuwe verbinding te openen bij elke aanvraag-reactiecyclus. Dus telkens wanneer u een verzoek verzendt of een antwoord ontvangt, brengt HTTP een nieuwe verbinding tot stand. Zie een verbinding als een veilige lijn om informatie over te dragen. Zodra uw informatie is aangeleverd, verbreekt HTTP de verbinding.

WebSocket houdt de verbinding voor u open zodat u informatie via dezelfde lijn kunt uitwisselen totdat een van u de verbinding verbreekt.

Een beetje technischer …

Oké, ik snap het allemaal dat de verbinding open blijft. Hoe helpt het mij? Ik voel geen verschil of ik e-mails verzend of chatberichten verstuur.

Je hebt gelijk. Als eindgebruiker is het verschil niet zichtbaar voor jou. Laten we denken als een applicatie-ontwikkelaar. Als ik zeg open een beveiligde regel voor informatie-uitwisseling, is er een proces bij betrokken. Dit wordt gewoonlijk Handshaking genoemd. Dit is een proces waarbij beide machines die betrokken zijn bij een gesprek overeenkomen een poort te openen voor het verzenden en ontvangen van informatie. Deze poorten zijn nu voor elkaar geblokkeerd en kunnen niet voor een derde machine worden gebruikt.

Voor handshaking verzendt en ontvangt het HTTP-protocol enkele extra bytes om te bevestigen of een poort vrij is in zowel de machines als de details van de poort ophaalt. Deze extra bytes zijn overhead wanneer frequente informatie-uitwisseling vereist is. Vandaar WebSocket.

Wanneer WebSocket gebruiken en wanneer niet?

Veruit is het duidelijk dat WebSocket alleen nuttig is wanneer frequente informatie-uitwisseling vereist is. WebSocket biedt een duplex-verbinding. Dit betekent dat informatie tegelijkertijd kan worden verzonden en ontvangen. Dit gaat uiteraard ten koste van het blokkeren van de poort totdat de tijdinformatie is uitgewisseld. Het gebruik van WebSocket is dus een afweging tussen het opslaan van cruciale bytes en het mogelijk maken van snellere gesprekken ten koste van het langer blokkeren van een poort.

De beste use-case van WebSocket is wanneer u snel real-time gegevens nodig hebt, zoals aandelenkoersen. Aandelenkoersen veranderen elke seconde. Het gebruik van HTTP zou dus cruciale tijd verspillen aan onnodig handshaking en de citaten zouden oud worden. Gebruik in plaats daarvan WebSocket en krijg het sneller voor elkaar.

Als u zich daarentegen een vertraging van enkele milliseconden kunt veroorloven in de informatie die u zoekt, moet u gaan voor HTTP.

Hoe WebSocket is ontstaan?

In de begintijd was internet een gigantisch netwerk van pagina's met tekstuele informatie. Dit waren meestal statische pagina's, wat betekende dat de informatie constant was en niet varieerde met latere opvragingen. Na verloop van tijd werd rijke inhoud zoals afbeeldingen een onmisbaar onderdeel van de webpagina's. De pagina's werden ook dynamisch, wat betekende dat nu de informatie op de pagina's kon worden gegenereerd op basis van zoekopdrachten.

Dit leidde tot de vooruitgang in technologieën met de uitvinding van dynamische HTML, JavaScript, enz. Ze waren allemaal erg geavanceerd maar gebruikten HTTP-protocollen. Het probleem met HTTP-protocollen - de verbinding was niet duplex. De communicatie was unidirectioneel. Op elk moment kan de client een verzoek naar de server sturen of kan de server reageren.

Dit maakte plaats voor WebSocket-protocollen die een full-duplex verbinding mogelijk maakten om de gebruikerservaring te verbeteren.

Inzicht in de term 'Full-duplex'

We zijn de term full-duplex nogal eens tegengekomen. Wat betekent dit eigenlijk?

In HTTP wordt de aanvraag altijd geïnitieerd door de client. Dit betekent dat de server niet reageert, tenzij de client een verzoek verzendt. Dit maakt communicatie unidirectioneel.

In WebSocket kunnen zowel de client als de server tegelijkertijd berichten naar elkaar pushen. De klant hoeft niet elke keer een verzoek in te dienen als dit enige reactie vereist. Dit maakt de verbinding bidirectioneel.

Om bi-directionaliteit te bereiken, moet men denken dat er op elk tijdstip twee verbindingen worden onderhouden. Dit is waar WebSocket anders is. WebSocket doet dit via een enkele TCP-verbinding. Dit wordt een full-duplex-verbinding genoemd, wat tweerichtingscommunicatie via een enkel kanaal betekent.

WebSocket Attributen, evenementen en methoden

Laten we een WebSocket-verbinding maken. Het volgende commando doet dit voor ons:

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

De nieuwe WebSocket-methode is de zichtbare API-methode die een gevestigde verbinding retourneert met de URL die is opgegeven als de eerste parameter en die voldoet aan een optionele protocolparameter.

1. Attributen

Nadat de verbinding tot stand is gebracht, hebben we de volgende kenmerken in ons Socket-object:

ik. Socket.readyState

Een alleen-lezen kenmerk dat de status van de verbinding aangeeft.
0 - Er is nog geen verbinding tot stand gebracht.
1 - Verbinding tot stand gebracht en communicatie is mogelijk.
2 - Verbinding verloopt via een handdruk.
3 - Verbinding is verbroken of kon niet worden geopend.

ii. Socket.bufferedAmount

Een alleen-lezen kenmerk dat het aantal bytes aangeeft dat in de wachtrij is geplaatst met de methode send ().

2. Evenementen

ik. Socket.onOpen

Een gebeurtenis die wordt geactiveerd wanneer een verbinding wordt geopend.

ii. Socket.onMessage

Een gebeurtenis die wordt geactiveerd wanneer de client een bericht van de server ontvangt.

iii. Socket.onError

De gebeurtenis heeft een communicatiefout veroorzaakt.

iv. Socket.onClose

De gebeurtenis is geactiveerd wanneer een verbinding is verbroken.

3. Methoden

ik. Socket.send (data)

De verzendmethode verzendt de gegevens met behulp van de verbinding.

ii. Socket.close ()

Met deze methode wordt de bestaande verbinding verbroken.

Voorbeeld

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

Voorbeeld uit de echte wereld

StackOverflow is een zeer populaire website die WebSocket gebruikt om meldingen te pushen wanneer er een nieuw antwoord op de vraag beschikbaar is.

Aanbevolen artikel

Dit is een handleiding geweest voor Wat is WebSocket? Hier hebben we de concepten, definitie, WebSocket-kenmerken, gebeurtenissen en methoden van WebSocket besproken. U kunt ook onze andere voorgestelde artikelen doornemen voor meer informatie -

  1. Is Hadoop Open Source?
  2. Wat is Java-erfenis?
  3. Wat is multithreading in C #?
  4. Wat is ASP.Net Web Services?
  5. Creatie en methoden van multithreading in C #