différences entre webhook et websocket

j'ai toujours voulu parler en temps réel.

j'ai fait cela il y a des années en PHP+Ajax+Mysql et j'ai cassé mon serveur. Puis j'ai essayé avec Flash+ un fichier texte. J'ai abandonné et je n'ai pas essayé depuis 10 ans. Mais récemment, j'ai entendu parler de webhooks et de websockets. Et ils semblent tous les deux être un moyen de le faire, mais je ne saisis pas vraiment la différence. N'importe qui peut l'expliquer?

43
demandé sur David 天宇 Wong 2014-04-19 20:48:48

2 réponses

Webhooks

Webhooks sont pour de serveur à serveur de communication. Ils fonctionnent par un serveur disant à un autre serveur qu'il veut des données envoyées à une certaine url quand quelque chose arrive.

cet article parle de certaines utilisations des webhooks dans les services populaires. Cette organisation parle beaucoup de l'aide dans le contexte de RESTful Api.

Websockets

Websockets sont (généralement) pour le serveur de communication du navigateur. Le serveur héberge un serveur websocket, et les clients peuvent ouvrir une connexion à ce serveur. Cela est populaire maintenant surtout parce qu'il est plus rapide et moins de ressources monopoliser que les anciennes façons de résoudre le problème, comme long-polling / COMET .

il est possible de connecter 2 serveurs en utilisant les websockets , mais qui n'est généralement pas ce qu'ils sont utilisés pour.

la confusion

même si l'une d'elles est (exclusivement) serveur-serveur et l'autre est (principalement) navigateur-serveur, ces technologies sont souvent discutées aux mêmes endroits, presque comme elles résolvent les mêmes problèmes. Si vous regardez en haut de la chaîne assez haut, vous voyez qu'ils résolvent tous les deux le problème de la communication "en temps réel", mais ils résolvent différents aspects de ce problème de façons très différentes .

une situation où il peut y avoir une comparaison directe est si vous construisez une API qui sera consommée par un serveur tiers. Dans ce cas, vous pouvez fournir une API webhook ou une API websocket . Les deux permettent au tiers d'obtenir des mises à jour rapidement:

  • si vous choisissez webhooks, que troisième partie aura toujours de trouver un moyen de pousser les modifications que vous dites à propos de leur client navigateurs.
  • si vous fournissez une API websocket, le tiers peut simplement configurer son site pour que chacun de ses utilisateurs se connecte directement à votre API websocket, et leurs serveurs doivent faire moins de travail.
114
répondu turtlemonvh 2018-01-19 14:31:08

voici quelques informations supplémentaires pour choisir entre webhooks et websockets.

Serveur-à-serveur de communications sur les websockets est devenu populaire avec une nouvelle génération de chatbot apps. Maintenant, beaucoup de chatbots fonctionnent sur des websockets avec fournir un avantage primaire de ne pas exiger une URL faisant face au public pour internes, bots privés. Dans cet environnement, voici quelques lignes directrices sur la façon d'utiliser les webhooks par rapport aux websockets.

Websockets

  • si votre application est une application de navigateur, utilisez des websockets parce que votre application ne peut pas recevoir de webhooks.
  • si votre application est une application serveur qui reçoit des messages d'un service sur Internet et que vous ne voulez pas ouvrir votre pare-feu, envisagez des websockets. Certaines entreprises exigent un examen de la sécurité de l'information avant d'ouvrir de telles connexions.

Webhooks

  • si votre application serveur a besoin de faire de nombreux abonnements, soit être prêt à gérer le volume de connexions WebSocket ouvertes à votre serveur ( voir cet article pour 1M connexions websocket ), ou passer à webhooks. Certains chatbots populaires sont passés de websockets à webhooks pour améliorer l'évolutivité.
  • si votre application serveur fonctionne comme une fonction cloud sur (AWS Lambda, fonctions Cloud Google, etc.), utilisez des webhooks parce que votre application ne gardera pas la connexion websocket ouverte.
  • si votre application de serveur tourne sur le niveau libre D'Heroku, utilisez des livres Web parce que votre Dyno va dormir et doit dormir pendant 6 heures par jour, à moins que vous n'instruisez manuellement votre serveur à dormir.
0
répondu Grokify 2018-05-24 05:39:53