0

我正在尝试了解网络套接字,但目前很难掌握该过程的每个部分。在客户端,我们得到了打开与服务器的连接的 WebSocket 对象。每当有新数据时,服务器都会将其传递给客户端,对吗?

这一切都很好,但是为了有新数据,服务器端脚本必须去获取它。在聊天应用程序中,我可以看到它是如何工作的,因为服务器一直在接收新消息。但是,如果新数据是推文呢?

这个应用程序中,网页每秒用新的 Twitter 数据更新一次。这是否意味着服务器端脚本每秒卷曲一次 Twitter API?考虑到与重复 HTTP 请求相关的开销以及 Twitter 设置的搜索限制,这似乎很奇怪。

简而言之,我了解浏览器-服务器连接,但我不了解服务器如何获取新数据,除非有一个脚本一遍又一遍地运行。

4

1 回答 1

2

这实际上取决于您的应用程序正在做什么以及它与哪些第三方 API 交互。

一般来说,是的。如果您正在与第三方 HTTP API 交互,您通常仍需要定期轮询。但是您可以保持 HTTP 保持活动连接打开,这应该会显着减少延迟。

但是,某些服务提供了流式 API,您可以在这种情况下利用这些 API。例如,Twitter 确实提供了这样的流式 API。Tweepy,您链接到的示例中使用的 twitter 客户端,支持使用 twitter 流 API。这使您无需轮询即可获得新推文。

如果您想知道它是如何工作的,它会发送一个 HTTP 请求并获得以换行符分隔的 JSON 消息的无限流式响应,这些响应可以即时处理。

其他服务可能会提供不同的流 API。如果可能,请优先使用流式 API 而不是轮询,因为它可以减少延迟和不必要的网络流量。

于 2013-05-14T22:09:42.070 回答