Webhooky a WebSockets sú dve technológie vývoja webu, ktoré si ľudia často mýlia. Mnoho moderných webových aplikácií využíva Webhooky aj WebSockets. Hoci sú Webhooky a WebSockets celkom odlišné, oba riešia komunikáciu vo webových aplikáciách.

Čo sú teda Webhooky a WebSockets? Aké sú veci, ktoré ich odlišujú?

Čo sú to webhooky a ako fungujú?

Webhook si môžete predstaviť ako „požiadavku HTTP spustenú udalosťou“. Čo to znamená? Webhook je akcia spätného volania HTTP zvyčajne spúšťaná udalosťou na serveri. To nie je všetko, zvyčajne odosiela údaje prostredníctvom vopred nakonfigurovanej adresy URL na iný server. Z toho sa rodí myšlienka, že webhooky sú komunikačným prostriedkom „server-to-server“.

Ak chcete lepšie porozumieť pracovnému mechanizmu Webhooks, zvážte webovú aplikáciu, ktorá na prijímanie platieb používa rozhranie API Stripe. Kedykoľvek zákazník uskutoční platbu, Stripe dostane peniaze, ale vaša aplikácia o tom nemá ani potuchy. Tu prichádzajú na rad webhooky. Zvážte obrázok nižšie:

instagram viewer

Stripe vyžaduje, aby ste poskytli webovú adresu koncového bodu Webhooku na odoslanie platobných údajov zákazníka na váš server, keď sa spustí nová platobná udalosť. Váš server potom prijme údaje, vykoná na nich operácie a uloží trvalé údaje do databázy.

Čo sú WebSockets a ako fungujú?

WebSocket je protokol, ktorý zvyčajne používate s JavaScriptom. Vytvára obojsmerný, trvalý, obojsmerný komunikačný kanál. Robí tak cez jeden spojenie medzi dvoma TCP portami z klienta (prehliadača) na server. Najpopulárnejšia aplikácia WebSockets je v chatovacích aplikáciách, ako je WhatsApp.

Zatiaľ čo Webhooky sú založené na HTTP (t. j. využívajú protokol HTTP), WebSocket je celý protokol založený na TCP, rovnako ako HTTP. WebSockets môžu byť veľmi prospešné pri práci na aplikáciách na streamovanie údajov server-klient s nízkou latenciou.

S pripojením WebSocket môžete dosiahnuť nízku latenciu, pretože na rozdiel od predvoleného HTTP zostáva otvorené medzi transakciami. To umožňuje bezproblémový tok údajov medzi oboma stranami.

Pred WebSockets používali vývojári rôzne metódy získavania údajov v reálnom čase cez HTTP. Hoci sú tu už nejaký čas, trpia obmedzeniami.

Napríklad dlhý polling vyžaduje, aby klient vždy poslal novú požiadavku na server v určenom časovom intervale. To znamená, že keď sú na serveri nové údaje, server ich vráti. Ak však nie je, žiadosť je prakticky zbytočná.

Na rozdiel od Webhooks môže ktorýkoľvek koniec pripojenia WebSocket odosielať údaje na druhý koniec. To je jeden z dôvodov, prečo WebSockets ponúkajú obrovskú výhodu rýchlosti, najmä keď sa údaje odosielajú zo servera klientovi. Aplikácie využívajúce WebSockets by mali ťažiť z nízkej latencie pri načítavaní údajov zo servera.

WebSockets môžete použiť aj cez TLS, rovnako ako HTTP. To zabezpečuje prenášané údaje a pomáha ich zmierňovať útoky typu man-in-the-middle. Dokonca aj trvalé pripojenie zostane s týmto prístupom bezpečné. Nebudete sa musieť obávať, že by útočníci ukradli dáta alebo ich komunikácia poškodila.

Kedy by ste mali používať webhooky?

Cieľom Webhookov a WebSockets je implementovať lepšie prostriedky komunikácie v reálnom čase cez web. Robia to však úplne odlišným spôsobom. Často môže byť problém rozhodnúť sa, ktorú z týchto dvoch technológií by ste mali použiť vo svojej aplikácii. Mali by ste venovať veľkú pozornosť ich silným a slabým stránkam, aby ste zistili, ktorá z nich najlepšie vyhovuje vašim požiadavkám.

Kedy by ste si teda mali zvoliť Webhooky pred WebSockets?

  • Pri používaní rozhrania API, ktoré nevlastníte. Zvážte príklad Stripe z predchádzajúcej ilustrácie Webhooku. Stripe je poskytovateľ platobných služieb a vaša aplikácia môže stavať iba na ich API. Nemáte žiadnu kontrolu nad Stripe, takže nemôžete vytvoriť server WebSocket na ich konci. V takýchto prípadoch by ste mali použiť webhooky.
  • Ak je vaša aplikácia server, ktorý potrebuje komunikovať s iným serverom, je najlepšie použiť webhooky. Ide o ideálny komunikačný systém „server-to-server“.
  • Webhooky nie sú obojsmerné ani trvalé. Webhooky by ste mali používať iba vtedy, keď vaša aplikácia neočakáva údaje odozvy cez rovnaký kanál.
  • Je tiež pozoruhodné, že Webhooky sú ideálnym spôsobom, ako ísť na serverové operácie, ktoré bežia ako funkcie bez servera. Príklady zahŕňajú AWS Lambda a cloudové funkcie Google.

S webhookmi môžete experimentovať webhook.site. Táto stránka vám umožní vidieť, ako budú vyzerať údaje, ktoré webhook odošle do vašej aplikácie. Je veľmi užitočné pochopiť povahu komunikácie Webhooku skôr, ako sa pokúsite implementovať koncový bod do svojej aplikácie.

Kedy by ste mali používať WebSockets?

Aplikácie v reálnom čase, oznamovacie systémy a systémy zdieľania živých údajov sú niektoré bežné aplikácie WebSockets. Majte na pamäti, že pri WebSockets musí byť kanál pripojenia vždy otvorený, tento protokol by sa mal používať iba vtedy, keď sa to oplatí.

  • WebSockets by ste mali používať, keď si vaša aplikácia neustále vymieňa údaje medzi klientom a serverom. Napríklad v živej aplikácii na zdieľanie polohy sa poloha používateľa pri pohybe neustále aktualizuje na serveri aj klientovi. WebSockets to umožňujú.
  • V multimediálnych komunikačných aplikáciách, ako je WhatsApp, je WebSocket ideálnym komunikačným protokolom. Umožňuje veľmi rýchlu obojsmernú výmenu údajov, ktorá je pre tieto druhy aplikácií kľúčová.
  • WebSockets by ste mali používať aj v aplikáciách, ktoré implementujú informačné kanály v reálnom čase, ako napríklad Livescore. Táto webová stránka zdieľa aktuálne aktualizácie futbalových zápasov v reálnom čase. Robí to však bez toho, aby bolo potrebné zadávať nové požiadavky alebo vyžadovať obnovenie prehliadača.
  • Medzi ďalšie prípady, v ktorých by ste mali používať WebSockets, patria živé aplikácie na streamovanie videa/audia, živé oznamovacie systémy a hry pre viacerých hráčov v reálnom čase. Sú tiež užitočné v aplikáciách na spoločné úpravy, ako sú Dokumenty Google, Notion atď.

Webhooky a WebSockets sú odlišné

Je jasné, že hoci Webhooks a WebSockets riešia podobné problémy, nie sú rovnaké a každý má svoje vlastné konkrétne prípady použitia. Webhooky sú jednosmerné spätné volania spúšťané udalosťami založené na protokole HTTP. Technológia WebSocket je samostatný protokol, ktorý umožňuje obojsmernú výmenu dát bez požiadaviek.

Pri vytváraní aplikácie je dôležité vždy identifikovať vašu potrebu, aby ste sa vyhli plytvaniu zdrojmi. V niektorých prípadoch by ste mali uprednostniť Webhooky, pretože WebSockets môžu byť niekedy cenovo nedostupné. Uistite sa, že ich používate len v prípade potreby.