Webhooks en WebSockets zijn twee webontwikkelingstechnologieën die mensen vaak door elkaar halen. Veel moderne webapplicaties maken gebruik van zowel Webhooks als WebSockets. Hoewel heel verschillend, richten Webhooks en WebSockets zich beide op communicatie in webapplicaties.

Dus wat zijn Webhooks en WebSockets? Wat zijn de dingen die hen anders maken?

Wat zijn webhooks en hoe werken ze?

U kunt een webhook beschouwen als een "door een gebeurtenis geactiveerd HTTP-verzoek". Wat betekent dit? Een webhook is een HTTP-callback-actie die meestal wordt geactiveerd door een gebeurtenis op een server. Dat is niet alles, het verzendt meestal gegevens via een vooraf geconfigureerde URL naar een andere server. Dit brengt het idee voort dat Webhooks een "server-naar-server" communicatiemiddel is.

Om het werkingsmechanisme van Webhooks beter te begrijpen, kunt u een webtoepassing overwegen die de API van Stripe gebruikt om betalingen te ontvangen. Telkens wanneer een klant een betaling doet, ontvangt Stripe het geld, maar uw app heeft geen idee. Dit is waar Webhooks binnenkomen. Beschouw de afbeelding hieronder:

instagram viewer

Stripe vereist dat u een Webhook-eindpunt-URL opgeeft om de betalingsgegevens van de klant naar uw server te sturen wanneer een nieuwe betalingsgebeurtenis wordt geactiveerd. Uw server ontvangt vervolgens de gegevens, voert er bewerkingen op uit en slaat persistente gegevens op in de database.

Wat zijn websockets en hoe werken ze?

WebSocket is een protocol dat u doorgaans gebruikt met JavaScript. Het brengt een tweerichtings, persistent, bidirectioneel communicatiekanaal tot stand. Het doet dit over een enkele verbinding gemaakt tussen twee TCP-poorten van een client (browser) naar een server. De meest populaire toepassing van WebSockets is in chattoepassingen zoals WhatsApp.

Hoewel Webhooks HTTP-gebaseerd zijn (d.w.z. gebruik maken van het HTTP-protocol), is WebSocket een volledig protocol op zichzelf gebaseerd op TCP, net als HTTP. WebSockets kunnen zeer nuttig zijn bij het werken aan server-client datastreaming-applicaties met lage latentie.

U kunt een lage latentie bereiken met een WebSocket-verbinding omdat deze open blijft tussen transacties, in tegenstelling tot standaard HTTP. Hierdoor kunnen gegevens naadloos tussen beide partijen stromen.

Vóór WebSockets gebruikten ontwikkelaars verschillende methoden om realtime gegevens via HTTP te verkrijgen. Hoewel ze al een tijdje bestaan, hebben ze last van beperkingen.

Lange polling vereist bijvoorbeeld dat de client altijd een nieuw verzoek naar de server stuurt met een opgegeven tijdsinterval. Dit betekent dat wanneer er nieuwe gegevens op de server staan, deze deze retourneert. Maar als dat niet het geval is, is het verzoek in feite verspild.

In tegenstelling tot Webhooks kan elk uiteinde van een WebSocket-verbinding gegevens naar het andere verzenden. Dit is een van de redenen waarom WebSockets een enorm snelheidsvoordeel bieden, vooral wanneer gegevens van de server naar de client worden verzonden. Apps die WebSockets gebruiken, moeten profiteren van een lage latentie bij het ophalen van gegevens van de server.

U kunt WebSockets ook via TLS gebruiken, net als HTTP. Dit beveiligt de gegevens die u verzendt, wat helpt om de man-in-the-middle-aanvallen. Zelfs een permanente verbinding blijft veilig met deze aanpak. U hoeft zich geen zorgen te maken dat aanvallers gegevens stelen of dat communicatie deze corrumpeert.

Wanneer moet u webhooks gebruiken?

Webhooks en WebSockets zijn bedoeld om betere middelen voor realtime communicatie via internet te implementeren. Ze doen dat echter op totaal verschillende manieren. Het kan vaak een uitdaging zijn om te beslissen welke van deze twee technologieën u in uw toepassing moet gebruiken. U moet zorgvuldig letten op hun sterke en zwakke punten om te zien welke het beste aan uw eisen voldoet.

Dus wanneer moet u Webhooks verkiezen boven WebSockets?

  • Wanneer u een API gebruikt die u niet bezit. Beschouw het Stripe-voorbeeld uit de eerdere Webhook-illustratie. Stripe is een betalingsdienstaanbieder en uw applicatie kan alleen voortbouwen op hun API. Je hebt geen controle over Stripe, dus je kunt aan hun einde geen WebSocket-server maken. In dit soort gevallen moet u Webhooks gebruiken.
  • Als uw app een server is die moet communiceren met een andere server, kunt u het beste Webhooks gebruiken. Dit is het ideale “server-to-server” communicatiesysteem.
  • Webhooks zijn niet bidirectioneel of persistent. Gebruik Webhooks alleen als uw toepassing geen responsgegevens via hetzelfde kanaal verwacht.
  • Het is ook opmerkelijk dat Webhooks de ideale manier zijn om te gaan voor serverbewerkingen die als serverloze functies worden uitgevoerd. Voorbeelden hiervan zijn AWS Lambda en Google cloud-functies.

U kunt experimenteren met webhooks op webhook.site. Op deze site kunt u zien hoe de gegevens die een webhook naar uw applicatie stuurt eruit zullen zien. Het is erg handig om de aard van de communicatie van een webhook te begrijpen voordat u een eindpunt in uw toepassing probeert te implementeren.

Wanneer moet u WebSockets gebruiken?

Real-time toepassingen, meldingssystemen en systemen voor het delen van live gegevens zijn enkele veelvoorkomende toepassingen van WebSockets. Houd er rekening mee dat met WebSockets het verbindingskanaal altijd open moet zijn, dit protocol mag alleen worden gebruikt als de kosten het waard zijn.

  • U moet WebSockets gebruiken wanneer uw toepassing continu gegevens uitwisselt tussen de client en de server. In een live-toepassing voor het delen van locaties wordt de locatie van een gebruiker bijvoorbeeld continu bijgewerkt op zowel de server als de client terwijl ze zich verplaatsen. WebSockets maken dit mogelijk.
  • In multimediacommunicatietoepassingen zoals WhatsApp is WebSocket het ideale communicatieprotocol. Het zorgt voor een zeer snelle bidirectionele gegevensuitwisseling die centraal staat bij dit soort apps.
  • U moet WebSockets ook gebruiken in toepassingen die realtime feeds implementeren, zoals Livescore. Deze website deelt live updates van voetbalwedstrijden zoals ze in realtime plaatsvinden. Maar het doet dit zonder dat u nieuwe verzoeken hoeft te doen of dat u uw browser hoeft te vernieuwen.
  • Andere gevallen waarin u WebSockets zou moeten gebruiken, zijn apps voor live video-/audiostreaming, live meldingssystemen en realtime multiplayer-games. Ze zijn ook handig in gezamenlijke bewerkingstoepassingen zoals Google Docs, Notion, enz.

Webhooks en WebSockets zijn anders

Het is duidelijk dat, hoewel Webhooks en WebSockets vergelijkbare problemen oplossen, ze niet hetzelfde zijn en elk zijn eigen specifieke gebruiksscenario's heeft. Webhooks zijn unidirectionele, door gebeurtenissen geactiveerde callbacks op basis van het HTTP-protocol. De WebSocket-technologie is een op zichzelf staand protocol, dat de bidirectionele uitwisseling van gegevens zonder verzoeken mogelijk maakt.

Het is belangrijk om altijd uw behoefte te identificeren bij het bouwen van een applicatie om verspilling van middelen te voorkomen. In sommige gevallen zou u de voorkeur moeten geven aan Webhooks omdat WebSockets soms onbetaalbaar kunnen zijn. Zorg ervoor dat u ze alleen gebruikt als dat nodig is.