Webhooks og WebSockets er to webudviklingsteknologier, som folk ofte forveksler. Mange moderne webapplikationer gør brug af både Webhooks og WebSockets. Selvom de er ret forskellige, adresserer både Webhooks og WebSockets kommunikation i webapplikationer.

Så hvad er Webhooks og WebSockets? Hvad er det, der gør dem anderledes?

Hvad er webhooks, og hvordan fungerer de?

Du kan tænke på en Webhook som en "hændelsesudløst HTTP-anmodning". Hvad betyder det? En Webhook er en HTTP-tilbagekaldshandling, der normalt udløses af en hændelse på en server. Det er ikke alt, det sender normalt data via en forudkonfigureret URL til en anden server. Dette føder ideen om, at Webhooks er et "server-til-server"-kommunikationsmiddel.

For bedre at forstå funktionsmekanismen for Webhooks, overvej en webapplikation, der bruger Stripes API til at modtage betalinger. Når en kunde foretager en betaling, modtager Stripe pengene, men din app aner det ikke. Det er her Webhooks kommer ind. Overvej billedet nedenfor:

Stripe kræver, at du angiver en Webhook-slutpunkts-URL for at sende kundens betalingsdata til din server, når en ny betalingshændelse udløses. Din server modtager derefter dataene, udfører handlinger på dem og gemmer vedvarende data i databasen.

instagram viewer

Hvad er WebSockets, og hvordan fungerer de?

WebSocket er en protokol, du typisk vil bruge med JavaScript. Det etablerer en tovejs, vedvarende, tovejskommunikationskanal. Det gør den over en enkelt forbindelse mellem to TCP-porte fra en klient (browser) til en server. Den mest populære anvendelse af WebSockets er i chatapplikationer som WhatsApp.

Mens Webhooks er HTTP-baserede (dvs. gør brug af HTTP-protokollen), er WebSocket en hel protokol i sig selv baseret på TCP ligesom HTTP. WebSockets kan være meget fordelagtige, når du arbejder med server-klientdatastreaming-applikationer med lav latens.

Du kan opnå lav latenstid med en WebSocket-forbindelse, fordi den forbliver åben mellem transaktioner, i modsætning til standard HTTP. Dette tillader data at flyde problemfrit mellem begge parter.

Før WebSockets brugte udviklere forskellige metoder til at få realtidsdata over HTTP. Selvom de har eksisteret i et stykke tid, lider de af begrænsninger.

For eksempel kræver lang polling, at klienten altid sender en ny anmodning til serveren med et bestemt tidsinterval. Det betyder, at når der er nye data på serveren, returnerer den dem. Men hvis der ikke er det, er anmodningen faktisk spildt.

I modsætning til Webhooks kan hver ende af en WebSocket-forbindelse sende data til den anden. Dette er en af ​​grundene til, at WebSockets tilbyder en enorm hastighedsfordel, især når data sendes fra serveren til klienten. Apps, der bruger WebSockets, bør drage fordel af lav latenstid, når de henter data fra serveren.

Du kan også bruge WebSockets over TLS ligesom HTTP. Dette sikrer de data, du sender, og hjælper med at afbøde man-in-the-midten-angreb. Selv en vedvarende forbindelse vil forblive sikker med denne tilgang. Du behøver ikke bekymre dig om, at angribere stjæler data, eller at kommunikation ødelægger dem.

Hvornår skal du bruge Webhooks?

Webhooks og WebSockets sigter mod at implementere bedre midler til realtidskommunikation over nettet. Det gør de dog på helt forskellige måder. Det kan ofte være en udfordring at beslutte, hvilken af ​​disse to teknologier du skal bruge i din ansøgning. Du bør være meget opmærksom på deres styrker og svagheder for at se, hvilken der bedst opfylder dine krav.

Så hvornår skal du vælge Webhooks frem for WebSockets?

  • Når du bruger en API, du ikke ejer. Overvej Stripe-eksemplet fra den tidligere Webhook-illustration. Stripe er en betalingstjenesteudbyder, og din applikation kan kun bygge oven på deres API. Du har ingen kontrol over Stripe, så du kan ikke oprette en WebSocket-server i deres ende. I tilfælde som dette bør du bruge Webhooks.
  • Hvis din app er en server, der skal kommunikere med en anden server, er det bedst at bruge Webhooks. Dette er det ideelle "server-til-server" kommunikationssystem.
  • Webhooks er ikke tovejs eller vedvarende. Du bør kun bruge Webhooks, når din applikation ikke forventer svardata over den samme kanal.
  • Det er også bemærkelsesværdigt, at Webhooks er den ideelle måde at gå til serveroperationer, der kører som serverløse funktioner. Eksempler inkluderer AWS Lambda og Google cloud-funktioner.

Du kan eksperimentere med Webhooks på webhook.site. Dette websted lader dig se, hvordan de data, som en Webhook sender til din applikation, vil se ud. Det er meget nyttigt at forstå karakteren af ​​en Webhooks kommunikation, før du forsøger at implementere et slutpunkt i din applikation.

Hvornår skal du bruge WebSockets?

Realtidsapplikationer, notifikationssystemer og live datadelingssystemer er nogle almindelige applikationer af WebSockets. Husk på, at med WebSockets skal forbindelseskanalen altid være åben, denne protokol bør kun bruges, når prisen er det værd.

  • Du bør bruge WebSockets, når din applikation løbende udveksler data mellem klienten og serveren. For eksempel i en live-placeringsdelingsapplikation opdateres en brugers placering løbende på både serveren og klienten, når de bevæger sig. WebSockets gør dette muligt.
  • I multimediekommunikationsapplikationer som WhatsApp er WebSocket den ideelle kommunikationsprotokol. Det giver mulighed for meget hurtig tovejs dataudveksling, hvilket er centralt for denne slags apps.
  • Du bør også bruge WebSockets i applikationer, der implementerer realtidsfeeds, såsom Livescore. Denne hjemmeside deler live fodboldkampopdateringer, efterhånden som de sker i realtid. Men det gør det uden at skulle lave nye anmodninger eller kræve, at du opdaterer din browser.
  • Andre tilfælde, hvor du bør bruge WebSockets, omfatter live video/lyd streaming apps, live notifikationssystemer og real-time multiplayer spil. De er også nyttige i samarbejdsredigeringsapplikationer som Google Docs, Notion osv.

Webhooks og WebSockets er forskellige

Det er klart, at selvom Webhooks og WebSockets løser lignende problemer, er de ikke de samme, og hver har sine egne særlige brugssager. Webhooks er ensrettede, hændelsesudløste tilbagekald baseret på HTTP-protokollen. WebSocket-teknologien er en selvstændig protokol, som tillader tovejs udveksling af data uden anmodninger.

Det er vigtigt altid at identificere dit behov, når du bygger en applikation for at undgå ressourcespild. I nogle tilfælde bør du foretrække Webhooks, fordi WebSockets nogle gange kan være uoverkommelige. Sørg for, at du kun bruger dem, når det er nødvendigt.