HTTP响应的进度,需要很长时间才能处理

时间:2014-09-01 15:53:55

标签: ajax json sockets http

我有一个请求返回一个JSON对象数组(由AngularJS Web应用程序中的AJAX调用请求),它代表服务器上的某些文件(node.js)。 大多数情况下,结果存储在数据库中,因此响应非常快。

但是,如果数据库尚未填写,或文件已更改,则需要解析文件(这包括服务器向第三方Web服务发出请求)和(存储在数据库中)然后发送给客户。

这可能需要10秒或更长时间,具体取决于文件的数量。

目前,Web浏览器只是等待响应,我有一个单独的WebSocket,用于将解析进度传达到网页上的进度条。但是,如果服务器上有许多文件,Web浏览器将会超时似乎是可行的。

所以似乎如果需要解析,我应该立即返回一个响应,并在告知解析完成后(通过WebSocket)让客户端请求。对此有什么合适的回应? 202接受了吗?或者可能需要426升级(到WebSocket)?

或者有没有办法通过HTTP发送进度而根本不使用WebSockets? (像使用Percent完整标头流式传输HTTP标头,然后在正文中发送json,或者如果需要很长时间才能获得响应的主体,Web浏览器会超时)

1 个答案:

答案 0 :(得分:0)

只是一些想法,可能有更多方法:

  • JSONP,您的页面没有固定的大小,并且会不断更新某些脚本区域,然后立即执行。我认为它更像是一个黑客,但它确实有效。
  • 然后你可以有一些XMLHTTPRequest来轮询服务器以获得状态更新并显示当前值。
  • 如果您使用带有一些秒刷新时间的元刷新标头重新加载同一页面,则可以在没有JavaScript的情况下执行类似的操作。在服务器端,您可以使用当前状态连续更新页面,或者只是按需创建页面。