Hvad er WebSocket? - Metoder og attributter for WebSockets

Indholdsfortegnelse:

Anonim

Hvad er WebSocket?

Forestil dig, at du skriver en e-mail til en ven eller en kollega. Du starter altid med Hej, efterfulgt af konteksten og slutter med en tak. Forestil dig den samme dig og din ven / kollega som har en ansigt til ansigt samtale. Vil du stadig starte hver af dine tekster med Hej og slutte med Tak? Et stort NEJ, ikke? Det opsummerer praktisk taget HTTP og WebSocket.

Teknisk forståelse af WebSocket

En WebSocket er en tovejs kommunikationsprotokol. Det giver en komplet dupleksforbindelse. Lad os forstå, hvordan disse udtryk er betydningsfulde.

Når vi ser tilbage på vores eksempel på e-mails og ansigt til ansigt-samtaler, betyder e-mails HTTP-protokol, mens ansigt til ansigt-samtaler betyder WebSocket-protokol. Dette betyder ikke, at e-mails sendes via HTTP-protokol, nej. E-mails bruger for det meste SMTP-protokoller, men lad os ikke bekymre dig om det i øjeblikket. Den vigtigste afhentning fra eksemplet er åbningen og lukningen af ​​den underliggende forbindelse mellem de to parter, der udveksler information.

HTTP udveksler information ved at åbne en ny forbindelse på enhver anmodning-svar-cyklus. Så hver gang du sender en anmodning eller modtager et svar, opretter HTTP en ny forbindelse. Tænk på en forbindelse som blot en sikker linje til overførsel af oplysninger. Så snart dine oplysninger er leveret, lukker HTTP forbindelsen.

WebSocket holder forbindelsen åben for dig, så du kan udveksle oplysninger over den samme linje, indtil en af ​​jer lukker forbindelsen.

Lidt mere teknisk …

Okay, jeg får alt om, at forbindelsen bliver åben. Hvordan hjælper det mig? Jeg føler ingen forskel, om jeg sender e-mails eller sender chatbeskeder.

Du har ret. Som slutbruger er forskellen ikke synlig for dig. Lad os tænke som en applikationsudvikler. Når jeg siger at åbne en sikker linje for informationsudveksling, er der en proces involveret i den. Dette kaldes almindeligvis håndtryk. Dette er en proces, hvor begge maskiner involveret i en samtale er enige om at åbne en port for at sende og modtage information. Nu er disse porte blokeret for hinanden og kan ikke bruges til en tredje maskine.

Ved håndskakning sender og modtager HTTP-protokollen nogle ekstra byte bare for at bekræfte, om en port er fri i begge maskiner og henter detaljerne i porten. Disse ekstra byte er en omkostning, når den hyppige udveksling af information er påkrævet. Derfor WebSocket.

Hvornår skal man bruge WebSocket og hvornår ikke?

Langt er det tydeligt, at WebSocket kun er nyttigt, når den hyppige udveksling af information er påkrævet. WebSocket giver en dupleksforbindelse. Dette betyder, at information kan sendes og modtages på samme tid. Dette kommer naturligvis til bekostning af at blokere havnen, indtil tidsoplysningerne udveksles. Så brug af WebSocket er en afvejning mellem at gemme vigtige bytes og aktivere hurtigere samtaler til bekostning af at blokere en port i længere tid.

Det bedste brug af WebSocket er, når du har brug for realtidsdata virkelig hurtig, som aktiekurser. Aktiekurserne ændres hvert sekund. Så brug af HTTP ville spilde afgørende tid i unødvendig håndtryk og tilbudene ville blive uaktuelle. Brug i stedet WebSocket og få det hurtigere.

I modsætning hertil, hvis du har råd til en forsinkelse på et par millisekunder i de oplysninger, du søger, skal du gå til HTTP.

Hvordan WebSocket blev til?

I de første dage var Internettet et kæmpe netværk af sider, der indeholdt tekstinformation. Dette var for det meste statiske sider, hvilket betød, at informationen var konstant og ikke varierede med efterfølgende hentninger. Over tid blev rig indhold som billeder en uundværlig del af websiderne. Siderne blev også dynamiske, hvilket betød, at informationerne på siderne nu kunne genereres baseret på forespørgsler.

Dette førte til fremskridt inden for teknologier med opfindelsen af ​​Dynamic HTML, JavaScript osv. De var alle meget avancerede, men brugte HTTP-protokoller. Problemet med HTTP-protokoller - forbindelsen var ikke dupleks. Kommunikationen var ensrettet. På ethvert tidspunkt kan enten klienten sende en anmodning til serveren, eller serveren kan svare.

Dette gav plads for WebSocket-protokoller, der tillader en fuld dupleksforbindelse for at forbedre brugeroplevelsen.

Forstå begrebet 'Full-Duplex'

Vi har været på tværs af begrebet full-duplex ganske meget. Hvad betyder dette egentlig?

I HTTP startes anmodningen altid af klienten. Dette betyder, at medmindre klienten sender en anmodning, vil serveren ikke svare. Dette gør kommunikation ensrettet.

I WebSocket kan både klienten og serveren skubbe beskeder til hinanden på samme tid. Klienten behøver ikke stille en anmodning, hver gang den kræver noget svar. Dette gør forbindelsen tovejs.

For at opnå tovejsrethed skal man tro, at der er to forbindelser, der opretholdes på hvert tidspunkt. Det er her WebSocket er anderledes. WebSocket gør dette via en enkelt TCP-forbindelse. Dette kaldes en fuld-duplex-forbindelse, hvilket betyder tovejskommunikation over en enkelt kanal.

WebSocket Attributter, Begivenheder og Metoder

Lad os oprette en WebSocket-forbindelse. Følgende kommando gør dette for os:

var Socket = ny WebSocket (URL, (protokoll));

Den nye WebSocket-metode er den eksponerede API-metode, der returnerer en etableret forbindelse med den URL, der er specificeret som den første parameter og overholder en valgfri protokolparameter.

1. Attributter

Når forbindelsen er etableret, har vi følgende attributter i vores Socket-objekt:

jeg. Socket.readyState

En skrivebeskyttet attribut, der fortæller forbindelsens tilstand.
0 - Forbindelse er endnu ikke etableret.
1 - Forbindelse oprettes, og kommunikation er mulig.
2 - Forbindelse gennemgår et håndtryk.
3 - Forbindelsen er lukket eller kunne ikke åbnes.

ii. Socket.bufferedAmount

En skrivebeskyttet attribut, der fortæller antallet af bytes, der står i kø ved hjælp af send () -metoden.

2. Begivenheder

jeg. Socket.onOpen

En begivenhed, der udløses, når en forbindelse åbnes.

ii. Socket.onMessage

En begivenhed, der udløses, når klienten modtager en meddelelse fra serveren.

iii. Socket.onError

Begivenheden udløste en fejl i kommunikationen.

iv. Socket.onClose

Begivenheden udløses, når en forbindelse lukkes.

3. Metoder

jeg. Socket.send (data)

Sendemetoden transmitterer dataene ved hjælp af forbindelsen.

ii. Socket.close ()

Denne metode afslutter den eksisterende forbindelse.

Eksempel

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

Eksempel på ægte verden

StackOverflow er et meget populært websted, der bruger WebSocket til at skubbe meddelelser, når der er et nyt svar til spørgsmålet.

Anbefalet artikel

Dette har været en guide til Hvad er WebSocket? Her diskuterede vi koncepter, definition, WebSocket attributter, begivenheder og metoder til WebSocket. Du kan også gennemgå vores andre foreslåede artikler for at lære mere -

  1. Er Hadoop Open Source?
  2. Hvad er Java-arv?
  3. Hvad er multithreading i C #?
  4. Hvad er ASP.Net Web Services?
  5. Oprettelse og metoder til multithreading i C #