Webhooks et WebSockets sont deux technologies de développement Web que les gens confondent souvent. De nombreuses applications Web modernes utilisent à la fois Webhooks et WebSockets. Bien que très différents, les Webhooks et les WebSockets traitent tous deux de la communication dans les applications Web.

Alors, que sont les Webhooks et les WebSockets? Quelles sont les choses qui les rendent différents ?

Que sont les webhooks et comment fonctionnent-ils ?

Vous pouvez considérer un Webhook comme une "requête HTTP déclenchée par un événement". Qu'est-ce que ça veut dire? Un Webhook est une action de rappel HTTP généralement déclenchée par un événement sur un serveur. Ce n'est pas tout, il envoie généralement des données via une URL préconfigurée vers un autre serveur. Cela donne naissance à l'idée que Webhooks est un moyen de communication "serveur à serveur".

Pour mieux comprendre le mécanisme de fonctionnement des Webhooks, considérons une application Web qui utilise l'API de Stripe pour recevoir des paiements. Chaque fois qu'un client effectue un paiement, Stripe reçoit l'argent, mais votre application n'en a aucune idée. C'est là qu'interviennent les Webhooks. Considérez l'image ci-dessous:

instagram viewer

Stripe vous demande de fournir une URL de point de terminaison Webhook pour envoyer les données de paiement du client à votre serveur lorsqu'un nouvel événement de paiement est déclenché. Votre serveur reçoit ensuite les données, effectue des opérations dessus et enregistre les données persistantes dans la base de données.

Que sont les WebSockets et comment fonctionnent-ils ?

WebSocket est un protocole que vous utiliserez généralement avec JavaScript. Il établit un canal de communication bidirectionnel, persistant et bidirectionnel. Il le fait sur un seul connexion établie entre deux ports TCP d'un client (navigateur) vers un serveur. L'application la plus populaire de WebSockets est dans les applications de chat comme WhatsApp.

Alors que les Webhooks sont basés sur HTTP (c'est-à-dire qu'ils utilisent le protocole HTTP), WebSocket est un protocole complet basé sur TCP, tout comme HTTP. WebSockets peut être très bénéfique lorsque vous travaillez sur des applications de streaming de données serveur-client à faible latence.

Vous pouvez obtenir une faible latence avec une connexion WebSocket car elle reste ouverte entre les transactions, contrairement au HTTP par défaut. Cela permet aux données de circuler de manière transparente entre les deux parties.

Avant WebSockets, les développeurs utilisaient diverses méthodes pour obtenir des données en temps réel via HTTP. Bien qu'ils existent depuis un certain temps, ils souffrent de limitations.

Par exemple, une longue interrogation nécessite que le client envoie toujours une nouvelle requête au serveur à un intervalle de temps spécifié. Cela signifie que lorsqu'il y a de nouvelles données sur le serveur, il les renvoie. Mais s'il n'y en a pas, la demande est effectivement gaspillée.

Contrairement aux Webhooks, chaque extrémité d'une connexion WebSocket peut envoyer des données à l'autre. C'est l'une des raisons pour lesquelles les WebSockets offrent un énorme avantage en termes de vitesse, en particulier lorsque les données sont envoyées du serveur au client. Les applications utilisant WebSockets devraient bénéficier d'une faible latence lors de la récupération des données du serveur.

Vous pouvez également utiliser WebSockets sur TLS, tout comme HTTP. Cela sécurise les données que vous transmettez, aidant à atténuer attaques de l'homme du milieu. Même une connexion persistante restera sécurisée avec cette approche. Vous n'aurez pas à vous soucier des attaquants qui volent des données ou des communications qui les corrompent.

Quand utiliser les webhooks ?

Webhooks et WebSockets visent à mettre en œuvre de meilleurs moyens de communication en temps réel sur le Web. Cependant, ils le font de manière totalement différente. Il peut souvent être difficile de décider laquelle de ces deux technologies vous devez utiliser dans votre application. Vous devez prêter une attention particulière à leurs forces et faiblesses pour voir laquelle répond le mieux à vos besoins.

Alors, quand choisir Webhooks plutôt que WebSockets ?

  • Lorsque vous consommez une API que vous ne possédez pas. Considérez l'exemple Stripe de l'illustration Webhook précédente. Stripe est un fournisseur de services de paiement et votre application ne peut s'appuyer que sur son API. Vous n'avez aucun contrôle sur Stripe, vous ne pouvez donc pas créer de serveur WebSocket de leur côté. Dans de tels cas, vous devez utiliser des Webhooks.
  • Si votre application est un serveur qui doit communiquer avec un autre serveur, il est préférable d'utiliser des Webhooks. C'est le système de communication « serveur à serveur » idéal.
  • Les webhooks ne sont ni bidirectionnels ni persistants. Vous ne devez utiliser Webhooks que lorsque votre application n'attend pas de données de réponse sur le même canal.
  • Il convient également de noter que les Webhooks sont la solution idéale pour les opérations de serveur qui s'exécutent en tant que fonctions sans serveur. Les exemples incluent AWS Lambda et les fonctions cloud de Google.

Vous pouvez expérimenter les Webhooks sur webhook.site. Ce site vous permet de voir à quoi ressembleront les données qu'un Webhook envoie à votre application. Il est très utile de comprendre la nature de la communication d'un Webhook avant d'essayer d'implémenter un point de terminaison dans votre application.

Quand devriez-vous utiliser WebSockets ?

Les applications en temps réel, les systèmes de notification et les systèmes de partage de données en direct sont des applications courantes de WebSockets. En gardant à l'esprit qu'avec WebSockets, le canal de connexion doit toujours être ouvert, ce protocole ne doit être utilisé que lorsque le coût en vaut la peine.

  • Vous devez utiliser WebSockets lorsque votre application échange en permanence des données entre le client et le serveur. Par exemple, dans une application de partage de position en direct, la position d'un utilisateur est continuellement mise à jour sur le serveur et le client au fur et à mesure de ses déplacements. Les WebSockets rendent cela possible.
  • Dans les applications de communication multimédia comme WhatsApp, WebSocket est le protocole de communication idéal. Il permet un échange de données bidirectionnel très rapide, ce qui est au cœur de ce type d'applications.
  • Vous devez également utiliser WebSockets dans les applications qui implémentent des flux en temps réel tels que Livescore. Ce site Web partage les mises à jour des matchs de football en direct au fur et à mesure qu'ils se déroulent en temps réel. Mais il le fait sans avoir à faire de nouvelles requêtes ni à actualiser votre navigateur.
  • Les autres cas où vous devriez utiliser WebSockets incluent les applications de streaming vidéo/audio en direct, les systèmes de notification en direct et les jeux multijoueurs en temps réel. Ils sont également utiles dans les applications d'édition collaborative telles que Google Docs, Notion, etc.

Les Webhooks et les WebSockets sont différents

Il est clair que, bien que Webhooks et WebSockets résolvent des problèmes similaires, ils ne sont pas identiques et chacun a ses propres cas d'utilisation particuliers. Les webhooks sont des rappels unidirectionnels déclenchés par des événements basés sur le protocole HTTP. La technologie WebSocket est un protocole autonome, qui permet l'échange bidirectionnel de données sans requêtes.

Il est important de toujours identifier votre besoin lors de la construction d'une application pour éviter de gaspiller des ressources. Dans certains cas, vous devriez préférer les Webhooks car les WebSockets peuvent parfois être d'un coût prohibitif. Assurez-vous de ne les utiliser que lorsque cela est nécessaire.