Webhooks vs. WebSockets: Wie unterscheiden sie sich?

Webhooks vs. WebSockets: Wie unterscheiden sie sich?

Webhooks und WebSockets sind zwei Webentwicklungstechnologien, die oft verwechselt werden. Viele moderne Webanwendungen verwenden sowohl Webhooks als auch WebSockets. Obwohl recht unterschiedlich, adressieren Webhooks und WebSockets beide die Kommunikation in Webanwendungen.





Was sind also Webhooks und WebSockets? Was sind die Dinge, die sie anders machen?





wie man Spiele auf dem Laptop schneller laufen lässt

Was sind Webhooks und wie funktionieren sie?

Sie können sich einen Webhook als „ereignisgesteuerte HTTP-Anfrage“ vorstellen. Was bedeutet das? Ein Webhook ist eine HTTP-Callback-Aktion, die normalerweise durch ein Ereignis auf einem Server ausgelöst wird. Das ist noch nicht alles, es sendet normalerweise Daten über eine vorkonfigurierte URL an einen anderen Server. Daraus entstand die Idee, dass Webhooks ein „Server-zu-Server“-Kommunikationsmittel sind.





Um den Funktionsmechanismus von Webhooks besser zu verstehen, betrachten Sie eine Webanwendung, die die API von Stripe verwendet, um Zahlungen zu erhalten. Immer wenn ein Kunde eine Zahlung tätigt, erhält Stripe das Geld, aber Ihre App hat keine Ahnung. Hier kommen Webhooks ins Spiel. Betrachten Sie das Bild unten:

  Visualisierung der Funktionsweise von Webhooks

Stripe verlangt, dass Sie eine Webhook-Endpunkt-URL angeben, um die Zahlungsdaten des Kunden an Ihren Server zu senden, wenn ein neues Zahlungsereignis ausgelöst wird. Ihr Server empfängt dann die Daten, führt Operationen darauf aus und speichert persistente Daten in der Datenbank.



Was sind WebSockets und wie funktionieren sie?

WebSocket ist ein Protokoll, das Sie normalerweise mit JavaScript verwenden . Es stellt einen wechselseitigen, dauerhaften, bidirektionalen Kommunikationskanal her. Es tut dies über eine einzige Verbindung zwischen zwei TCP-Ports von einem Client (Browser) zu einem Server. Die beliebteste Anwendung von WebSockets sind Chat-Anwendungen wie WhatsApp.

Während Webhooks HTTP-basiert sind (d. h. das HTTP-Protokoll verwenden), ist WebSocket ein vollständiges Protokoll, das auf TCP basiert, genau wie HTTP. WebSockets können sehr nützlich sein, wenn Sie an Server-Client-Datenstreaming-Anwendungen mit geringer Latenz arbeiten.





Sie können mit einer WebSocket-Verbindung eine geringe Latenz erreichen, da sie im Gegensatz zum Standard-HTTP zwischen den Transaktionen offen bleibt. Dies ermöglicht einen nahtlosen Datenfluss zwischen beiden Parteien.

  Websockets-Visualisierung

Vor WebSockets verwendeten Entwickler verschiedene Methoden, um Echtzeitdaten über HTTP abzurufen. Obwohl es sie schon eine Weile gibt, leiden sie an Einschränkungen.





Beispielsweise erfordert eine lange Abfrage, dass der Client in einem bestimmten Zeitintervall immer eine neue Anfrage an den Server sendet. Das bedeutet, dass neue Daten auf dem Server zurückgegeben werden. Wenn dies jedoch nicht der Fall ist, wird die Anfrage effektiv verschwendet.

Im Gegensatz zu Webhooks kann jedes Ende einer WebSocket-Verbindung Daten an das andere senden. Dies ist ein Grund, warum WebSockets einen enormen Geschwindigkeitsvorteil bieten, insbesondere wenn Daten vom Server zum Client gesendet werden. Apps, die WebSockets verwenden, sollten beim Abrufen von Daten vom Server von geringer Latenz profitieren.

Sie können WebSockets auch über TLS verwenden, genau wie HTTP. Dies sichert die von Ihnen übermittelten Daten und trägt zur Minderung bei Man-in-the-Middle-Angriffe . Sogar eine dauerhafte Verbindung bleibt mit diesem Ansatz sicher. Sie müssen sich keine Sorgen machen, dass Angreifer Daten stehlen oder die Kommunikation diese beschädigen könnte.

Wann sollten Sie Webhooks verwenden?

Webhooks und WebSockets zielen darauf ab, bessere Mittel zur Echtzeitkommunikation über das Internet zu implementieren. Sie tun dies jedoch auf völlig unterschiedliche Weise. Es kann oft eine Herausforderung sein, zu entscheiden, welche dieser beiden Technologien Sie in Ihrer Anwendung verwenden sollten. Sie sollten sorgfältig auf ihre Stärken und Schwächen achten, um zu sehen, welches Ihren Anforderungen am besten entspricht.

Wie bekomme ich Standbilder aus einem Video?

Wann sollten Sie also Webhooks gegenüber WebSockets wählen?

  • Wenn Sie eine API verwenden, die Sie nicht besitzen. Betrachten Sie das Stripe-Beispiel aus der früheren Webhook-Illustration. Stripe ist ein Zahlungsdienstleister und Ihre Anwendung kann nur auf dessen API aufbauen. Sie haben keine Kontrolle über Stripe, daher können Sie an deren Ende keinen WebSocket-Server erstellen. In solchen Fällen sollten Sie Webhooks verwenden.
  • Wenn Ihre App ein Server ist, der mit einem anderen Server kommunizieren muss, verwenden Sie am besten Webhooks. Dies ist das ideale „Server-zu-Server“-Kommunikationssystem.
  • Webhooks sind nicht bidirektional oder persistent. Sie sollten Webhooks nur verwenden, wenn Ihre Anwendung keine Antwortdaten über denselben Kanal erwartet.
  • Es ist auch bemerkenswert, dass Webhooks der ideale Weg für Serveroperationen sind, die als serverlose Funktionen ausgeführt werden. Beispiele sind AWS Lambda und Google Cloud-Funktionen.

Sie können mit Webhooks weiter experimentieren webhook.site . Auf dieser Website können Sie sehen, wie die Daten aussehen, die ein Webhook an Ihre Anwendung sendet. Es ist sehr nützlich, die Art der Kommunikation eines Webhooks zu verstehen, bevor Sie versuchen, einen Endpunkt in Ihrer Anwendung zu implementieren.

Wann sollten Sie WebSockets verwenden?

Echtzeitanwendungen, Benachrichtigungssysteme und Live-Datenfreigabesysteme sind einige gängige Anwendungen von WebSockets. Bedenkt man, dass bei WebSockets der Verbindungskanal immer offen sein muss, sollte dieses Protokoll nur verwendet werden, wenn sich die Kosten lohnen.

  • Sie sollten WebSockets verwenden, wenn Ihre Anwendung kontinuierlich Daten zwischen Client und Server austauscht. Beispielsweise wird in einer Anwendung zur Live-Standortfreigabe der Standort eines Benutzers sowohl auf dem Server als auch auf dem Client kontinuierlich aktualisiert, während er sich bewegt. WebSockets machen dies möglich.
  • In Multimedia-Kommunikationsanwendungen wie WhatsApp ist WebSocket das ideale Kommunikationsprotokoll. Es ermöglicht einen sehr schnellen bidirektionalen Datenaustausch, der für diese Art von Apps von zentraler Bedeutung ist.
  • Sie sollten WebSockets auch in Anwendungen verwenden, die Echtzeit-Feeds wie Livescore implementieren. Diese Website teilt Live-Fußballspiel-Updates, während sie in Echtzeit stattfinden. Dies geschieht jedoch, ohne dass Sie neue Anfragen stellen oder Ihren Browser aktualisieren müssen.
  • Andere Fälle, in denen Sie WebSockets verwenden sollten, sind Live-Video-/Audio-Streaming-Apps, Live-Benachrichtigungssysteme und Echtzeit-Multiplayer-Spiele. Sie sind auch in kollaborativen Bearbeitungsanwendungen wie Google Docs, Notion usw. nützlich.

Webhooks und WebSockets sind unterschiedlich

Es ist klar, dass Webhooks und WebSockets zwar ähnliche Probleme lösen, aber nicht dasselbe sind und jeweils ihre eigenen Anwendungsfälle haben. Webhooks sind unidirektionale, ereignisgesteuerte Rückrufe, die auf dem HTTP-Protokoll basieren. Die WebSocket-Technologie ist ein eigenständiges Protokoll, das den bidirektionalen Austausch von Daten ohne Anfragen ermöglicht.

Es ist wichtig, beim Erstellen einer Anwendung immer Ihren Bedarf zu identifizieren, um eine Verschwendung von Ressourcen zu vermeiden. In einigen Fällen sollten Sie Webhooks bevorzugen, da WebSockets manchmal unerschwinglich sein können. Stellen Sie sicher, dass Sie sie nur bei Bedarf verwenden.