Websocket web套接字仍然需要重复的HTTP请求吗?

Websocket web套接字仍然需要重复的HTTP请求吗?,websocket,Websocket,我试图理解web套接字,但目前很难掌握该过程的每一部分。在客户端,我们有一个WebSocket对象,它打开了与服务器的连接。每当有新数据时,服务器就会将其发送给客户机,对吗 这很好,但是为了有新的数据,服务器端脚本必须去获取它。在聊天应用程序中,我可以看到这是如何工作的,因为服务器一直在接收新消息。但如果新数据是推特呢 在web页面中,每秒更新一次新的Twitter数据。这是否意味着服务器端脚本每秒卷曲一次Twitter API?考虑到与重复HTTP请求相关的开销,以及Twitter设置的搜索限

我试图理解web套接字,但目前很难掌握该过程的每一部分。在客户端,我们有一个WebSocket对象,它打开了与服务器的连接。每当有新数据时,服务器就会将其发送给客户机,对吗

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

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


简而言之,我了解浏览器与服务器的连接,但我不了解服务器如何获取新数据,除非有一个脚本反复运行

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

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

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

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

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