Webhooky a WebSockets jsou dvě technologie vývoje webu, které si lidé často pletou. Mnoho moderních webových aplikací využívá jak Webhooky, tak WebSockets. Ačkoli jsou Webhooky a WebSockets zcela odlišné, oba řeší komunikaci ve webových aplikacích.
Co jsou tedy Webhooky a WebSockets? Jaké jsou věci, které je odlišují?
Co jsou webhooky a jak fungují?
Webhook si můžete představit jako „požadavek HTTP spouštěný událostí“. Co to znamená? Webhook je akce zpětného volání HTTP obvykle spuštěná událostí na serveru. To není vše, obvykle odesílá data prostřednictvím předem nakonfigurované adresy URL na jiný server. Tím se rodí myšlenka, že webhooky jsou komunikačním prostředkem „server-to-server“.
Chcete-li lépe porozumět pracovnímu mechanismu Webhooků, zvažte webovou aplikaci, která k přijímání plateb využívá rozhraní Stripe's API. Kdykoli zákazník provede platbu, Stripe obdrží peníze, ale vaše aplikace nic netuší. Zde přichází na řadu webhooky. Zvažte obrázek níže:
Stripe vyžaduje, abyste poskytli adresu URL koncového bodu Webhooku, abyste mohli odeslat platební údaje zákazníka na váš server, když je spuštěna nová platební událost. Váš server poté data přijme, provede s nimi operace a uloží trvalá data do databáze.
Co jsou to WebSockets a jak fungují?
WebSocket je protokol, který obvykle používáte s JavaScriptem. Vytváří obousměrný, trvalý, obousměrný komunikační kanál. Činí tak přes singl spojení mezi dvěma TCP porty z klienta (prohlížeče) na server. Nejoblíbenější aplikací WebSockets je chatovací aplikace, jako je WhatsApp.
Zatímco Webhooky jsou založeny na HTTP (tj. využívají protokol HTTP), WebSocket je celý protokol sám o sobě založený na TCP stejně jako HTTP. WebSockets mohou být velmi přínosné při práci na aplikacích pro streamování dat server-klient s nízkou latencí.
S připojením WebSocket můžete dosáhnout nízké latence, protože na rozdíl od výchozího HTTP zůstává mezi transakcemi otevřené. To umožňuje bezproblémový tok dat mezi oběma stranami.
Před WebSockets používali vývojáři různé metody získávání dat v reálném čase přes HTTP. Přestože jsou tu nějakou dobu, trpí omezeními.
Například dlouhé dotazování vyžaduje, aby klient vždy posílal nový požadavek na server v určeném časovém intervalu. To znamená, že když jsou na serveru nová data, server je vrátí. Ale pokud tomu tak není, požadavek je prakticky zbytečný.
Na rozdíl od Webhooků může kterýkoli konec připojení WebSocket odesílat data do druhého. To je jeden z důvodů, proč WebSockets nabízejí obrovskou výhodu v rychlosti, zvláště když jsou data odesílána ze serveru klientovi. Aplikace využívající WebSockets by měly těžit z nízké latence při načítání dat ze serveru.
WebSockets můžete používat také přes TLS, stejně jako HTTP. Tím jsou zabezpečena data, která přenášíte, a pomáhá to zmírňovat útoky typu man-in-the-middle. I trvalé připojení zůstane s tímto přístupem bezpečné. Nemusíte se bát, že by útočníci ukradli data nebo je komunikace poškodila.
Kdy byste měli používat webhooky?
Webhooky a WebSockets mají za cíl implementovat lepší prostředky komunikace v reálném čase přes web. Dělají to však zcela odlišnými způsoby. Často může být problém rozhodnout, kterou z těchto dvou technologií byste měli ve své aplikaci použít. Měli byste věnovat pečlivou pozornost jejich silným a slabým stránkám, abyste zjistili, která nejlépe vyhovuje vašim požadavkům.
Kdy byste tedy měli zvolit Webhooky před WebSockets?
- Při používání rozhraní API, které nevlastníte. Zvažte příklad Stripe z dřívější ilustrace Webhooku. Stripe je poskytovatel platebních služeb a vaše aplikace může stavět pouze na jejich API. Nemáte žádnou kontrolu nad Stripe, takže na jejich konci nemůžete vytvořit server WebSocket. V takových případech byste měli použít webhooky.
- Pokud je vaše aplikace server, který potřebuje komunikovat s jiným serverem, je nejlepší použít webhooky. Toto je ideální komunikační systém „server-to-server“.
- Webhooky nejsou obousměrné ani trvalé. Webhooky byste měli používat pouze tehdy, když vaše aplikace neočekává data odezvy přes stejný kanál.
- Je také pozoruhodné, že webhooky jsou ideálním způsobem pro serverové operace, které běží jako funkce bez serveru. Příklady zahrnují AWS Lambda a cloudové funkce Google.
S webhooky můžete experimentovat webhook.site. Tato stránka vám umožní vidět, jak budou vypadat data, která webhook odešle do vaší aplikace. Než se pokusíte implementovat koncový bod do své aplikace, je velmi užitečné porozumět povaze komunikace Webhooku.
Kdy byste měli používat WebSockets?
Aplikace v reálném čase, oznamovací systémy a systémy sdílení živých dat jsou některé běžné aplikace WebSockets. Mějte na paměti, že u WebSockets musí být připojovací kanál vždy otevřený, tento protokol by se měl používat pouze tehdy, když se náklady vyplatí.
- WebSockets byste měli používat, když si vaše aplikace neustále vyměňuje data mezi klientem a serverem. Například v živé aplikaci pro sdílení polohy je poloha uživatele průběžně aktualizována jak na serveru, tak na klientovi, jak se pohybují. WebSockets to umožňují.
- V multimediálních komunikačních aplikacích, jako je WhatsApp, je WebSocket ideálním komunikačním protokolem. Umožňuje velmi rychlou obousměrnou výměnu dat, která je pro tyto druhy aplikací zásadní.
- WebSockets byste měli používat také v aplikacích, které implementují kanály v reálném čase, jako je Livescore. Tato webová stránka sdílí živé aktualizace fotbalových zápasů, jak k nim dochází v reálném čase. Dělá to však, aniž by bylo nutné zadávat nové požadavky nebo vyžadovat aktualizaci prohlížeče.
- Mezi další případy, kdy byste měli používat WebSockets, patří živé aplikace pro streamování videa/audia, živé oznamovací systémy a hry pro více hráčů v reálném čase. Jsou také užitečné v aplikacích pro spolupráci, jako jsou Dokumenty Google, Notion atd.
Webhooky a WebSockets se liší
Je jasné, že ačkoli Webhooky a WebSockets řeší podobné problémy, nejsou stejné a každý má své vlastní konkrétní případy použití. Webhooky jsou jednosměrná, událostmi spouštěná zpětná volání založená na protokolu HTTP. Technologie WebSocket je samostatný protokol, který umožňuje obousměrnou výměnu dat bez požadavků.
Při vytváření aplikace je důležité vždy identifikovat vaši potřebu, abyste se vyhnuli plýtvání zdroji. V některých případech byste měli dát přednost Webhookům, protože WebSockets mohou být někdy cenově nedostupné. Ujistěte se, že je používáte pouze v případě potřeby.