Mis on WebSocket?
Pange endale pilt, kirjutades sõbrale või kolleegile e-kirja. Alustate alati terega, järgneb kontekst ja lõpeb tänuga. Kujutage nüüd ette, nagu teie ja teie sõber / kolleeg vestleksid näost näkku. Kas alustaksite iga oma teksti ikkagi Terega ja lõpetaks Tänuga? Suur EI, eks? See võtab praktiliselt kokku HTTP ja WebSocket.
WebSocketi tehniline mõistmine
WebSocket on kahesuunaline suhtlusprotokoll. See tagab täieliku kahepoolse ühenduse. Mõistagem, kuidas need mõisted on olulised.
Vaadates tagasi meie e-kirjade näole ja näost näkku vestlustele, tähendavad e-kirjad HTTP-protokolli, näost näkku vestlused aga WebSocketi protokolli. See ei tähenda, et e-kirju saadetakse HTTP-protokolli kaudu, ei. E-kirjad kasutavad enamasti SMTP-protokolle, kuid ärme nüüd muretse selle pärast. Oluline näitest äravõtmine on aluseks oleva ühenduse avamine ja sulgemine kahe teabevahetuse osalise vahel.
HTTP vahetab teavet, avades uue ühenduse kõigil päringutele vastamise tsüklitel. Nii et iga kord, kui saadate päringu või saate vastuse, loob HTTP uue ühenduse. Mõelge ühendusele kui lihtsalt turvalisele liinile teabe edastamiseks. Niipea kui teie teave on edastatud, sulgeb HTTP ühenduse.
WebSocket hoiab ühenduse teie jaoks avatud, et saaksite vahetada teavet sama liini kaudu seni, kuni üks teist ühenduse loob.
Natuke tehnilisem …
Olgu, saan aru sellest, et ühendus jääb lahti. Kuidas see mind aitab? Mul pole vahet, kas saadan meilisõnumeid või vestlussõnumeid.
Sul on õigus. Lõppkasutajana pole erinevus teile nähtav. Mõelgem nagu rakenduste arendaja. Kui ma ütlen, et avage turvaline teabevahetusliin, on sellega seotud protsess. Seda nimetatakse tavaliselt käepigistuseks. See on protsess, mille käigus mõlemad vestluses osalevad masinad nõustuvad teabe saatmiseks ja vastuvõtmiseks pordi avamiseks. Nüüd on need pordid üksteise jaoks blokeeritud ja neid ei saa kasutada kolmanda masina jaoks.
Käepigistuseks saadab ja võtab HTTP protokoll vastu mõned lisabaidid lihtsalt selleks, et kinnitada, kas port on mõlemas masinas vaba, ja tõmbab pordi üksikasjad. Need lisabaidid on üldkulud, kui on vaja sagedast teabevahetust. Seega WebSocket.
Millal WebSocketit kasutada ja millal mitte?
Kaugelt on ilmne, et WebSocket on kasulik ainult siis, kui on vaja sagedast teabevahetust. WebSocket pakub dupleksühendust. See tähendab, et teavet saab korraga saata ja vastu võtta. Ilmselt maksab see sadama blokeerimise hinnaga kuni ajateabe vahetamiseni. Niisiis on WebSocketi kasutamine kompromiss oluliste baitide salvestamise ja kiiremate vestluste võimaldamise vahel pordi pikema blokeerimise hinnaga.
Parim WebSocketi kasutamise juhtum on see, kui vajate reaalajas andmeid, näiteks aktsiahindu, tõesti kiiresti. Aktsiahinnad muutuvad iga sekundiga. Niisiis kulutaks HTTP kasutamine asjatundliku kätlemise jaoks üliolulist aega ja hinnapakkumised jääksid seisma. Selle asemel kasutage WebSocket ja tehke see kiiremini korda.
Vastupidiselt, kui saate endale lubada soovitud teabe mõne millisekundi pikkust viivitust, peate minema HTTP-le.
Kuidas WebSocket sündis?
Algusaegadel oli Internet hiiglaslik tekstilist teavet sisaldavate lehtede võrk. Need olid enamasti staatilised lehed, mis tähendas, et teave oli konstantne ja ei varieerunud järgnevate otsingute korral. Aja jooksul sai rikas sisu, näiteks pildid, veebilehtede asendamatuks osaks. Lehed muutusid ka dünaamilisteks, mis tähendas, et nüüd sai lehtedel olevat teavet päringute põhjal genereerida.
See tõi kaasa tehnoloogia arendamise dünaamilise HTMLi, JavaScripti jms leiutamise teel. Kõik nad olid väga arenenud, kuid kasutasid HTTP-protokolle. Probleem HTTP-protokollidega - ühendus ei olnud kahepoolne. Side oli ühesuunaline. Klient võib suvalisel ajahetkel saata serverile päringu või saab server vastata.
See andis võimaluse WebSocketi protokollide jaoks, mis võimaldavad täielikku dupleksühendust, et parandada kasutajakogemust.
Mõiste "täisdupleks" mõistmine
Me oleme kohanud terminit full-duplex üsna palju. Mida see tegelikult tähendab?
HTTP-s algatab päringu alati klient. See tähendab, et kui klient ei saada päringut, ei reageeri server. See muudab suhtlemise ühesuunaliseks.
WebSocketis olles saavad nii klient kui ka server üksteisele sõnumeid korraga saata. Klient ei pea taotlust esitama iga kord, kui see nõuab mingit vastust. See muudab ühenduse kahesuunaliseks.
Kahesuunalise suundumuse saavutamiseks tuleb nüüd mõelda, et igal ajahetkel on kaks ühendust. Siin on WebSocket erinev. WebSocket teeb seda ühe TCP-ühenduse kaudu. Seda nimetatakse täisdupleksseks ühenduseks, mis tähendab kahesuunalist suhtlust ühe kanali kaudu.
WebSoki atribuudid, sündmused ja meetodid
Loome WebSocki ühenduse. Järgmine käsk teeb seda meie jaoks:
var Socket = uus WebSocket (URL, (protocal));
Uus WebSocket-meetod on avatud API-meetod, mis tagastab loodud ühenduse esimese parameetrina määratletud URL-iga ja valikulise protokolli parameetri järgimisega.
1. Atribuudid
Kui ühendus on loodud, on meie Socket-objektis järgmised atribuudid:
i. Socket.readyState
Kirjutuskaitstud atribuut, mis räägib ühenduse olekust.
0 - ühendust pole veel loodud.
1 - ühendus on loodud ja side on võimalik.
2 - ühendus toimub läbi käepigistuse.
3 - ühendus on suletud või seda ei saanud avada.
ii. Socket.bufferedAmount
Kirjutuskaitstud atribuut, mis näitab saatmise () meetodi abil järjekorda pandud baitide arvu.
2. Üritused
i. Socket.onOpen
Ühenduse avamisel käivitatakse sündmus.
ii. Socket.onMessage
Sündmus käivitatakse siis, kui klient saab serverilt sõnumi.
iii. Socket.onError
Sündmus vallandas suhtlusvea.
iv. Socket.onSulge
Sündmus käivitati, kui ühendus on suletud.
3. Meetodid
i. Socket.send (andmed)
Saatmisviis edastab andmed ühenduse kaudu.
ii. Socket.close ()
See meetod katkestab olemasoleva ühenduse.
Näide
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ärismaailma näide
StackOverflow on väga populaarne veebisait, mis kasutab WebSocketit teatiste edastamiseks, kui küsimusele on saadaval uus vastus.
Soovitatav artikkel
See on olnud juhend teemal Mis on WebSocket? Siin arutasime WebSocketi mõisteid, määratlusi, WebSocketi atribuute, sündmusi ja meetodeid. Lisateavet leiate ka meie muudest soovitatud artiklitest -
- Kas Hadoop on avatud lähtekoodiga?
- Mis on Java pärand?
- Mis on C # mitmekorruseline?
- Mis on ASP.Net veebiteenused?
- Mitmekeermelise loomine ja meetodid C # -s