Webhooks vs. WebSockets: Hur skiljer de sig åt?

Webhooks vs. WebSockets: Hur skiljer de sig åt?

Webhooks och WebSockets är två webbutvecklingstekniker som människor ofta blandar ihop. Många moderna webbapplikationer använder sig av både Webhooks och WebSockets. Även om de är ganska olika, adresserar både Webhooks och WebSockets kommunikation i webbapplikationer.





Så vad är Webhooks och WebSockets? Vad är det för saker som gör dem annorlunda?





Vad är Webhooks och hur fungerar de?

Du kan tänka på en Webhook som en 'händelseutlöst HTTP-förfrågan'. Vad betyder det här? En Webhook är en HTTP-återuppringningsåtgärd som vanligtvis utlöses av en händelse på en server. Det är inte allt, det skickar vanligtvis data via en förkonfigurerad URL till en annan server. Detta föder idén om att Webhooks är ett 'server-till-server'-kommunikationsmedel.





För att bättre förstå hur Webhooks fungerar, överväg en webbapplikation som använder Stripes API för att ta emot betalningar. Närhelst en kund gör en betalning får Stripe pengarna, men din app har ingen aning. Det är här Webhooks kommer in. Se bilden nedan:

  Visualisering av hur Webhooks fungerar

Stripe kräver att du tillhandahåller en Webhook-slutpunkts-URL för att skicka kundens betalningsdata till din server när en ny betalningshändelse utlöses. Din server tar sedan emot data, utför operationer på den och sparar beständiga data till databasen.



Vad är WebSockets och hur fungerar de?

WebSocket är ett protokoll som du vanligtvis använder med JavaScript . Den etablerar en tvåvägs, ihållande, dubbelriktad kommunikationskanal. Det gör det över en singel anslutning mellan två TCP-portar från en klient (webbläsare) till en server. Den mest populära applikationen av WebSockets är i chattapplikationer som WhatsApp.

Medan Webhooks är HTTP-baserade (dvs använder HTTP-protokollet), är WebSocket ett helt protokoll i sig baserat på TCP precis som HTTP. WebSockets kan vara mycket fördelaktiga när du arbetar med server-klientdataströmningsapplikationer med låg latens.





Du kan uppnå låg latens med en WebSocket-anslutning eftersom den förblir öppen mellan transaktioner, till skillnad från standard-HTTP. Detta gör att data kan flöda sömlöst mellan båda parter.

  websockets visualisering

Innan WebSockets använde utvecklare olika metoder för att få realtidsdata över HTTP. Även om de har funnits ett tag lider de av begränsningar.





Till exempel kräver lång polling att klienten alltid skickar en ny begäran till servern vid ett angivet tidsintervall. Det betyder att när det finns ny data på servern så returnerar den den. Men om det inte finns, är begäran faktiskt bortkastad.

Till skillnad från Webhooks kan vardera änden av en WebSocket-anslutning skicka data till den andra. Detta är en anledning till varför WebSockets erbjuder en enorm hastighetsfördel, speciellt när data skickas från servern till klienten. Appar som använder WebSockets bör dra nytta av låg latens när data hämtas från servern.

Du kan också använda WebSockets över TLS, precis som HTTP. Detta säkrar data du överför, vilket hjälper till att minska man-i-mitten-attacker . Även en ihållande anslutning kommer att förbli säker med detta tillvägagångssätt. Du behöver inte oroa dig för att angripare stjäl data eller att kommunikation skadar den.

När ska du använda Webhooks?

Webhooks och WebSockets syftar till att implementera bättre sätt för realtidskommunikation över webben. Men de gör det på helt olika sätt. Det kan ofta vara en utmaning att bestämma vilken av dessa två tekniker du ska använda i din applikation. Du bör vara noggrann uppmärksam på deras styrkor och svagheter för att se vilken som bäst uppfyller dina krav.

hur man lägger till genvägar till iphone

Så när ska du välja Webhooks framför WebSockets?

  • När du konsumerar ett API som du inte äger. Betrakta Stripe-exemplet från den tidigare Webhook-illustrationen. Stripe är en betaltjänstleverantör och din applikation kan bara bygga på deras API. Du har ingen kontroll över Stripe, så du kan inte skapa en WebSocket-server i slutet av dem. I sådana här fall bör du använda Webhooks.
  • Om din app är en server som behöver kommunicera med en annan server är det bäst att använda Webhooks. Detta är det ideala 'server-till-server' kommunikationssystemet.
  • Webhooks är inte dubbelriktade eller beständiga. Du bör bara använda Webhooks när din applikation inte förväntar sig svarsdata över samma kanal.
  • Det är också anmärkningsvärt att Webhooks är det perfekta sättet att gå för serveroperationer som körs som serverlösa funktioner. Exempel inkluderar AWS Lambda och Googles molnfunktioner.

Du kan experimentera med Webhooks på webhook.site . Den här webbplatsen låter dig se hur data som en Webhook skickar till din applikation kommer att se ut. Det är mycket användbart att förstå karaktären av en Webhooks kommunikation innan du försöker implementera en slutpunkt i din applikation.

När ska du använda WebSockets?

Realtidsapplikationer, aviseringssystem och livedatadelningssystem är några vanliga applikationer för WebSockets. Tänk på att med WebSockets måste anslutningskanalen alltid vara öppen, detta protokoll bör endast användas när kostnaden är värt det.

  • Du bör använda WebSockets när din applikation kontinuerligt utbyter data mellan klienten och servern. Till exempel, i en live-platsdelningsapplikation uppdateras en användares plats kontinuerligt på både servern och klienten när de flyttar. WebSockets gör detta möjligt.
  • I multimediakommunikationsapplikationer som WhatsApp är WebSocket det idealiska kommunikationsprotokollet. Det möjliggör mycket snabbt dubbelriktat datautbyte vilket är centralt för den här typen av appar.
  • Du bör också använda WebSockets i applikationer som implementerar realtidsflöden som Livescore. Den här webbplatsen delar liveuppdateringar av fotbollsmatcher när de sker i realtid. Men det gör det utan att behöva göra nya förfrågningar eller kräva att du uppdaterar din webbläsare.
  • Andra fall där du bör använda WebSockets inkluderar appar för direktuppspelning av video/ljud, liveaviseringssystem och realtidsspel för flera spelare. De är också användbara i samarbetsredigeringsprogram som Google Docs, Notion, etc.

Webhooks och WebSockets är olika

Det är tydligt att även om Webhooks och WebSockets löser liknande problem, är de inte samma sak och var och en har sina egna speciella användningsfall. Webhooks är enkelriktade, händelseutlösta återuppringningar baserade på HTTP-protokollet. WebSocket-tekniken är ett fristående protokoll som möjliggör dubbelriktat utbyte av data utan förfrågningar.

Det är viktigt att alltid identifiera ditt behov när du bygger en applikation för att undvika slöseri med resurser. I vissa fall bör du föredra Webhooks eftersom WebSockets ibland kan vara kostsamma. Se till att du bara använder dem när det behövs.