Webhooks og WebSockets er to nettutviklingsteknologier som folk ofte forveksler. Mange moderne nettapplikasjoner bruker både Webhooks og WebSockets. Selv om de er ganske forskjellige, adresserer både Webhooks og WebSockets kommunikasjon i nettapplikasjoner.
Så hva er Webhooks og WebSockets? Hva er tingene som gjør dem forskjellige?
Hva er Webhooks, og hvordan fungerer de?
Du kan tenke på en Webhook som en "hendelsesutløst HTTP-forespørsel". Hva betyr dette? En Webhook er en HTTP-tilbakeringingshandling som vanligvis utløses av en hendelse på en server. Det er ikke alt, det sender vanligvis data via en forhåndskonfigurert URL til en annen server. Dette føder ideen om at Webhooks er et "server-til-server" kommunikasjonsmiddel.
For bedre å forstå arbeidsmekanismen til Webhooks, bør du vurdere en nettapplikasjon som bruker Stripes API for å motta betalinger. Når en kunde foretar en betaling, mottar Stripe pengene, men appen din har ingen anelse. Det er her Webhooks kommer inn. Tenk på bildet nedenfor:
Stripe krever at du oppgir en Webhook-endepunkt-URL for å sende kundens betalingsdata til serveren din når en ny betalingshendelse utløses. Serveren din mottar deretter dataene, utfører operasjoner på dem og lagrer vedvarende data til databasen.
Hva er WebSockets, og hvordan fungerer de?
WebSocket er en protokoll du vanligvis bruker med JavaScript. Den etablerer en toveis, vedvarende, toveis kommunikasjonskanal. Det gjør det over en singel forbindelse mellom to TCP-porter fra en klient (nettleser) til en server. Den mest populære applikasjonen til WebSockets er i chatteapplikasjoner som WhatsApp.
Mens Webhooks er HTTP-basert (dvs. bruker HTTP-protokollen), er WebSocket en hel protokoll på egen hånd basert på TCP akkurat som HTTP. WebSockets kan være svært fordelaktige når du arbeider med server-klientdatastrømmeapplikasjoner med lav latens.
Du kan oppnå lav ventetid med en WebSocket-tilkobling fordi den forblir åpen mellom transaksjoner, i motsetning til standard HTTP. Dette gjør at data flyter sømløst mellom begge parter.
Før WebSockets brukte utviklere ulike metoder for å få sanntidsdata over HTTP. Selv om de har eksistert en stund, lider de av begrensninger.
For eksempel krever lang polling at klienten alltid sender en ny forespørsel til serveren med et spesifisert tidsintervall. Dette betyr at når det er nye data på serveren, returnerer den dem. Men hvis det ikke er det, er forespørselen faktisk bortkastet.
I motsetning til Webhooks, kan hver ende av en WebSocket-tilkobling sende data til den andre. Dette er en grunn til at WebSockets tilbyr en enorm hastighetsfordel, spesielt når data sendes fra serveren til klienten. Apper som bruker WebSockets bør dra nytte av lav ventetid når data hentes fra serveren.
Du kan også bruke WebSockets over TLS, akkurat som HTTP. Dette sikrer dataene du overfører, og bidrar til å redusere mann-i-midt-angrep. Selv en vedvarende forbindelse vil forbli sikker med denne tilnærmingen. Du trenger ikke å bekymre deg for at angripere stjeler data eller kommunikasjon som ødelegger det.
Når bør du bruke Webhooks?
Webhooks og WebSockets har som mål å implementere bedre midler for sanntidskommunikasjon over nettet. Imidlertid gjør de det på helt forskjellige måter. Det kan ofte være en utfordring å bestemme hvilken av disse to teknologiene du skal bruke i din applikasjon. Du bør være nøye med deres styrker og svakheter for å se hvilken som best oppfyller dine krav.
Så når bør du velge Webhooks fremfor WebSockets?
- Når du bruker et API du ikke eier. Tenk på Stripe-eksemplet fra den tidligere Webhook-illustrasjonen. Stripe er en betalingstjenesteleverandør og applikasjonen din kan bare bygge på toppen av deres API. Du har ingen kontroll over Stripe, så du kan ikke opprette en WebSocket-server på slutten av dem. I tilfeller som dette bør du bruke Webhooks.
- Hvis appen din er en server som trenger å kommunisere med en annen server, er det best å bruke Webhooks. Dette er det ideelle "server-til-server" kommunikasjonssystemet.
- Webhooks er ikke toveis eller vedvarende. Du bør bare bruke Webhooks når applikasjonen din ikke forventer svardata over samme kanal.
- Det er også bemerkelsesverdig at Webhooks er den ideelle måten å gå for serveroperasjoner som kjører som serverløse funksjoner. Eksempler inkluderer AWS Lambda og Google skyfunksjoner.
Du kan eksperimentere med Webhooks på webhook.site. Denne siden lar deg se hvordan dataene som en Webhook sender til applikasjonen din vil se ut. Det er veldig nyttig å forstå innholdet i en Webhooks kommunikasjon før du prøver å implementere et endepunkt i applikasjonen din.
Når bør du bruke WebSockets?
Sanntidsapplikasjoner, varslingssystemer og live datadelingssystemer er noen vanlige applikasjoner for WebSockets. Husk at med WebSockets må tilkoblingskanalen alltid være åpen, denne protokollen bør bare brukes når kostnaden er verdt det.
- Du bør bruke WebSockets når applikasjonen din kontinuerlig utveksler data mellom klienten og serveren. For eksempel, i en applikasjon for posisjonsdeling, blir en brukers plassering kontinuerlig oppdatert på både serveren og klienten mens de beveger seg. WebSockets gjør dette mulig.
- I multimediekommunikasjonsapplikasjoner som WhatsApp er WebSocket den ideelle kommunikasjonsprotokollen. Det gir mulighet for veldig rask toveis datautveksling som er sentral for denne typen apper.
- Du bør også bruke WebSockets i applikasjoner som implementerer sanntidsfeeder som Livescore. Denne nettsiden deler live fotballkampoppdateringer etter hvert som de skjer i sanntid. Men det gjør det uten å måtte komme med nye forespørsler eller kreve at du oppdaterer nettleseren.
- Andre tilfeller der du bør bruke WebSockets inkluderer apper for direkteavspilling av video/lyd, live varslingssystemer og flerspillerspill i sanntid. De er også nyttige i samarbeidsredigeringsapplikasjoner som Google Docs, Notion, etc.
Webhooks og WebSockets er forskjellige
Det er klart at selv om Webhooks og WebSockets løser lignende problemer, er de ikke de samme og hver har sine egne spesielle brukstilfeller. Webhooks er enveis, hendelsesutløste tilbakeringinger basert på HTTP-protokollen. WebSocket-teknologien er en frittstående protokoll som tillater toveis utveksling av data uten forespørsler.
Det er viktig å alltid identifisere behovet når du bygger en applikasjon for å unngå sløsing med ressurser. I noen tilfeller bør du foretrekke Webhooks fordi WebSockets noen ganger kan være uoverkommelige. Pass på at du bare bruker dem når det er nødvendig.