webhook和websocket之间的差异

时间:2014-04-19 16:48:49

标签: websocket webhooks

我一直想做一个实时聊天。

几年前我在PHP + Ajax + Mysql中完成了这项工作并破坏了我的服务器。然后我尝试使用Flash +文本文件。我放弃了,并且在10年内没有尝试过。但最近我听说过webhooks和websockets。他们似乎都是一种方法,但我并没有真正掌握其中的差异。谁能解释一下?

2 个答案:

答案 0 :(得分:146)

网络挂接

Webhooks用于服务器到服务器的通信。它们由一台服务器工作,告诉另一台服务器,当发生某些事情时,它希望将数据发送到某个URL。

This article讨论了流行服务中webhooks的一些用途。 This organization谈论了很多关于在RESTful API环境中使用它们的事情。

的WebSockets

Websockets(通常)用于服务器到浏览器的通信。服务器托管websocket服务器,客户端可以打开与该服务器的连接。现在这种流行很受欢迎,主要是因为它比旧方法解决问题更快,资源占用更少,例如long-polling / COMET

它是possible to connect 2 servers using websockets,但通常不是它们的用途。

混乱

即使其中一个是(专门)服务器 - 服务器,一个(主要是)浏览器 - 服务器,这些技术经常在同一个地方讨论,几乎就像他们解决相同的问题一样。如果你把链条抬得足够高,你就会发现它们都解决了“实时”的问题。沟通,但 他们以非常不同的方式解决了这个问题的不同方面

可能存在直接比较的一种情况是,您是否正在构建将由第三方服务器使用的API。在这种情况下,您可以提供 webhook API websocket API 。两者都允许第三方快速获得更新:

  • 如果您选择webhooks,那么第三方仍然需要找到一种方法来推动您告诉他们的更改到他们客户的浏览器。
  • 如果您提供websocket API,第三方可以设置他们的网站,以便他们的每个用户直接连接到您的websocket API,他们的服务器必须做更少的工作。

答案 1 :(得分:4)

以下是在webhooks和websockets之间进行选择的一些其他信息。

通过websockets进行的服务器到服务器通信在新一代聊天机器人应用程序中变得越来越流行。现在,许多聊天机器人在websockets上运行,其主要优点是不需要内部私有机器人的公共URL。在这种环境中,以下是关于何时考虑使用webhooks和websockets的一些指导原则。

<强>的WebSockets

  • 如果您的应用是浏览器应用,请使用websockets,因为您的应用无法接收webhook。
  • 如果您的应用是通过Internet从服务接收消息并且您不想打开防火墙的服务器应用,请考虑使用websockets。有些公司在开通此类连接之前需要进行信息安全审查。

<强>网络挂接

  • 如果您的服务器应用程序需要进行多次订阅,请准备好处理与服务器(see this article for 1M websocket connections)打开的websocket连接的数量,或切换到webhooks。一些流行的聊天机器人已经从websockets转移到webhooks以提高可扩展性。
  • 如果您的服务器应用程序作为云功能运行(AWS Lambda,Google Cloud Functions等),请使用webhooks,因为您的应用程序不会保持websocket连接处于打开状态。
  • 如果您的服务器应用程序在Heroku免费套餐上运行,请使用webhooks,因为您的Dyno将进入睡眠状态并且必须每天睡眠6小时,除非您手动指示服务器休眠。