【发布时间】:2014-06-04 01:31:24
【问题描述】:
我一直想进行实时聊天。
几年前我在 PHP+Ajax+Mysql 中完成了这项工作,并破坏了我的服务器。然后我尝试使用 Flash+ 一个文本文件。我放弃了,10年没试过了。但最近我听说了 webhooks 和 websockets。他们似乎都是这样做的一种方式,但我并没有真正理解其中的区别。谁能解释一下?
【问题讨论】:
我一直想进行实时聊天。
几年前我在 PHP+Ajax+Mysql 中完成了这项工作,并破坏了我的服务器。然后我尝试使用 Flash+ 一个文本文件。我放弃了,10年没试过了。但最近我听说了 webhooks 和 websockets。他们似乎都是这样做的一种方式,但我并没有真正理解其中的区别。谁能解释一下?
【问题讨论】:
Webhooks 用于服务器到服务器的通信。它们通过一台服务器告诉另一台服务器它希望在发生某些事情时将数据发送到某个 url 来工作。
This article 讨论了一些流行服务中 webhook 的使用。 This organization 谈了很多关于在 RESTful API 的上下文中使用它们。
Websockets(通常)用于服务器到浏览器的通信。服务器托管一个 websocket 服务器,客户端可以打开到该服务器的连接。这现在很流行,主要是因为它比旧的解决问题的方法更快,占用资源更少,比如long-polling/COMET。
它是possible to connect 2 servers using websockets,但这通常不是它们的用途。
尽管其中一种是(专门)服务器-服务器,另一种是(主要)浏览器-服务器,但这些技术经常在相同的地方讨论,几乎就像它们在解决相同的问题一样。如果您向上查找足够高的链,您会发现它们都解决了“实时”通信问题,但是它们以非常不同的方式解决这个问题的不同方面 .
可能存在直接比较的一种情况是,如果您正在构建一个将由第三方服务器使用的 API。在这种情况下,您可以提供 webhook API 或 websocket API。两者都允许第三方快速获取更新:
【讨论】:
这里有一些关于在 webhook 和 websocket 之间进行选择的附加信息。
通过 websockets 的服务器到服务器通信已在新一代聊天机器人应用程序中流行起来。现在,许多聊天机器人在 websockets 上运行,提供了一个主要优势,即内部私人机器人不需要面向公众的 URL。在这种环境下,以下是有关何时考虑使用 webhook 与 websockets 的一些指南。
网络套接字
网络钩子
【讨论】: