2014-09-01 80 views
0

我有一個請求返回一個JSON對象(由AngularJS Web應用程序中的AJAX調用請求),它表示服務器上的某些文件(node.js) 。 大部分時間結果都存儲在數據庫中,所以響應非常快。需要很長時間處理的HTTP響應的進度

但是,如果數據庫尚未填充或文件已更改,則需要解析文件(這包括服務器向第三方Web服務發出請求)和(存儲在數據庫中),然後是發送給客戶。

這可能需要10秒或更長時間,具體取決於有多少文件。

當前Web瀏覽器將等待響應,並且我有一個單獨的WebSocket將解析進度傳遞到網頁上的進度條。但是,如果服務器上有很多文件,Web瀏覽器將會超時。

因此,如果需要解析,我應該立即返回一個響應,並在告訴解析完成後(通過WebSocket)獲取客戶端請求。對此有什麼合適的迴應? 202接受?或者也許需要升級(對WebSocket)?

或者有沒有辦法通過HTTP發送進度,而不是使用WebSockets呢? (比如HTTP頭部使用百分比完整頭部進行流式處理,然後發送JSON到主體中,或者如果Web瀏覽器需要很長時間才能獲得響應主體,則會超時)。

回答

0

只是一些想法,更爲方式:

  • JSONP,你的頁面並沒有一個固定的大小,並得到連續然後把它立即執行一些腳本區更新。我會認爲它更像是一種黑客行爲,但它起作用。
  • 然後你可以有一些XMLHTTPRequest輪詢服務器以獲得狀態更新並顯示當前值。
  • 如果您使用元刷新標題重新加載相同的頁面並刷新一些秒數,您可以在沒有JavaScript的情況下執行類似的操作。在服務器端,您可以使用當前狀態連續更新頁面,也可以按需創建。
相關問題