Webhooks in WebSockets sta dve tehnologiji spletnega razvoja, ki ju ljudje pogosto zamenjujejo. Številne sodobne spletne aplikacije uporabljajo tako Webhooks kot WebSockets. Čeprav sta Webhooks in WebSockets precej različna, obravnavata komunikacijo v spletnih aplikacijah.

Kaj so torej Webhooki in WebSockets? Katere stvari jih delajo drugačne?

Kaj so Webhooki in kako delujejo?

Webhook si lahko predstavljate kot »zahtevo HTTP, ki jo sproži dogodek«. Kaj to pomeni? Webhook je dejanje povratnega klica HTTP, ki ga običajno sproži dogodek v strežniku. To še ni vse, običajno pošlje podatke prek vnaprej konfiguriranega URL-ja na drug strežnik. Tako se rodi ideja, da so Webhooks komunikacijsko sredstvo »strežnik-strežnik«.

Če želite bolje razumeti delovni mehanizem Webhookov, razmislite o spletni aplikaciji, ki za prejemanje plačil uporablja API Stripe. Kadar koli stranka izvede plačilo, Stripe prejme denar, vendar vaša aplikacija nima pojma. Tukaj pridejo na vrsto Webhooki. Razmislite o spodnji sliki:

instagram viewer

Stripe zahteva, da zagotovite URL končne točke Webhook za pošiljanje podatkov o plačilu stranke v vaš strežnik, ko se sproži nov dogodek plačila. Vaš strežnik nato prejme podatke, izvaja operacije na njih in shrani obstojne podatke v bazo podatkov.

Kaj so WebSockets in kako delujejo?

WebSocket je protokol, ki ga običajno uporabljate z JavaScriptom. Vzpostavi dvosmerni, vztrajni, dvosmerni komunikacijski kanal. To počne čez eno samo vzpostavljena povezava med dvema vratima TCP od odjemalca (brskalnika) do strežnika. Najbolj priljubljena aplikacija WebSockets je v aplikacijah za klepet, kot je WhatsApp.

Medtem ko Webhooki temeljijo na HTTP (tj. uporabljajo protokol HTTP), je WebSocket sam po sebi celoten protokol, ki temelji na TCP tako kot HTTP. WebSockets so lahko zelo koristni pri delu z aplikacijami za pretakanje podatkov med strežnikom in odjemalcem z nizko zakasnitvijo.

S povezavo WebSocket lahko dosežete nizko zakasnitev, ker ostane odprta med transakcijami, za razliko od privzetega HTTP. To omogoča nemoten pretok podatkov med obema stranema.

Pred WebSockets so razvijalci uporabljali različne metode pridobivanja podatkov v realnem času prek HTTP. Čeprav obstajajo že nekaj časa, trpijo zaradi omejitev.

Dolgo anketiranje na primer zahteva, da odjemalec vedno pošlje novo zahtevo strežniku v določenem časovnem intervalu. To pomeni, da ko so v strežniku novi podatki, jih vrne. Če pa tega ni, je zahteva dejansko zapravljena.

Za razliko od Webhookov lahko kateri koli konec povezave WebSocket pošilja podatke drugemu. To je eden od razlogov, zakaj WebSockets ponujajo veliko prednost pri hitrosti, zlasti ko se podatki pošiljajo s strežnika odjemalcu. Aplikacije, ki uporabljajo WebSockets, bi morale imeti koristi od nizke zakasnitve pri pridobivanju podatkov iz strežnika.

WebSockets lahko uporabljate tudi prek TLS, tako kot HTTP. To ščiti podatke, ki jih prenašate, in pomaga ublažiti napadi človeka v sredini. S tem pristopom bo celo trajna povezava ostala varna. Ne bo vam treba skrbeti, da bi napadalci ukradli podatke ali poškodovali komunikacijo.

Kdaj bi morali uporabljati Webhooks?

Webhooki in WebSockets so namenjeni implementaciji boljših načinov komunikacije v realnem času prek spleta. Vendar to počnejo na popolnoma različne načine. Pogosto je lahko izziv odločiti se, katero od teh dveh tehnologij bi morali uporabiti v svoji aplikaciji. Pozorno se osredotočite na njihove prednosti in slabosti, da ugotovite, kateri najbolje ustreza vašim zahtevam.

Kdaj torej izbrati Webhooks namesto WebSockets?

  • Pri uporabi API-ja, ki ni v vaši lasti. Razmislite o primeru Stripe iz prejšnje ilustracije Webhook. Stripe je ponudnik plačilnih storitev in vaša aplikacija lahko gradi samo na njihovem API-ju. Nimate nadzora nad Stripe, zato na njihovem koncu ne morete ustvariti strežnika WebSocket. V takih primerih bi morali uporabiti Webhooks.
  • Če je vaša aplikacija strežnik, ki mora komunicirati z drugim strežnikom, je najbolje, da uporabite Webhooks. To je idealen komunikacijski sistem "strežnik-strežnik".
  • Webhooki niso dvosmerni ali trajni. Webhooks uporabite le, če vaša aplikacija ne pričakuje podatkov o odzivu prek istega kanala.
  • Omeniti velja tudi, da so Webhooks idealen način za strežniške operacije, ki delujejo kot funkcije brez strežnika. Primeri vključujejo funkcije AWS Lambda in Google Cloud.

Lahko eksperimentirate z Webhooks na webhook.site. To spletno mesto vam omogoča, da vidite, kako bodo videti podatki, ki jih Webhook pošlje vaši aplikaciji. Zelo koristno je razumeti naravo komunikacije Webhooka, preden poskusite implementirati končno točko v svojo aplikacijo.

Kdaj uporabljati WebSockets?

Aplikacije v realnem času, sistemi obveščanja in sistemi za izmenjavo podatkov v živo so nekatere pogoste aplikacije WebSockets. Upoštevajoč, da mora biti pri WebSockets povezovalni kanal vedno odprt, je treba ta protokol uporabljati le, če se stroški splačajo.

  • WebSockets morate uporabljati, ko vaša aplikacija nenehno izmenjuje podatke med odjemalcem in strežnikom. Na primer, v aplikaciji za skupno rabo lokacije v živo se lokacija uporabnika nenehno posodablja na strežniku in odjemalcu, ko se premika. WebSockets to omogočajo.
  • V multimedijskih komunikacijskih aplikacijah, kot je WhatsApp, je WebSocket idealen komunikacijski protokol. Omogoča zelo hitro dvosmerno izmenjavo podatkov, ki je osrednjega pomena za te vrste aplikacij.
  • WebSockets bi morali uporabljati tudi v aplikacijah, ki izvajajo vire v realnem času, kot je Livescore. To spletno mesto deli posodobitve nogometnih tekem v živo, ko se zgodijo v realnem času. Vendar to stori, ne da bi morali vložiti nove zahteve ali zahtevati, da osvežite brskalnik.
  • Drugi primeri, ko bi morali uporabiti WebSockets, vključujejo aplikacije za pretakanje videa/zvoka v živo, sisteme za obveščanje v živo in igre za več igralcev v realnem času. Uporabni so tudi v aplikacijah za sodelovalno urejanje, kot so Google Dokumenti, Notion itd.

Webhooki in WebSockets so različni

Jasno je, da čeprav Webhooks in WebSockets rešujejo podobne težave, niso enaki in ima vsak svoje posebne primere uporabe. Webhooki so enosmerni povratni klici, ki jih sproži dogodek in temeljijo na protokolu HTTP. Tehnologija WebSocket je samostojen protokol, ki omogoča dvosmerno izmenjavo podatkov brez zahtev.

Pomembno je, da pri gradnji aplikacije vedno prepoznate svoje potrebe, da preprečite zapravljanje virov. V nekaterih primerih bi raje imeli Webhooks, ker so lahko WebSockets včasih previsoki. Prepričajte se, da jih uporabljate le, kadar je to potrebno.