Web套接字是否仍需要重复的HTTP请求?

时间:2013-05-14 21:49:13

标签: websocket

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

但是,某些服务提供了流式API,您可以在这种情况下利用它们。例如Twitter确实提供了这样的流API。 Tweety,您链接到的示例中使用的Twitter客户端supports consuming the twitter streaming API。这允许您在没有轮询的情况下获取新推文。

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

其他服务可能提供不同的流API。如果可能,请通过轮询支持流API,因为它可以减少延迟和不必要的网络流量。