[英]XHR request -> getting ERR_EMPTY_RESPONSE
我正在嘗試進行較長時間(2-5m)的提取請求,但是大約1m30后,我在Chrome控制台中收到此錯誤消息:
無法加載資源:net :: ERR_EMPTY_RESPONSE
因此,我試圖將我的XHR請求包裝在一個計時器中,如下所示:
客戶端代碼:
xhr.open('GET', '/refresh', true);
xhr.timeout = 600000;
xhr.onload = function () {
window.location.reload();
};
xhr.send(null);
服務器端代碼:
app.get("/refresh", (req, res) => {
var process = spawn('python3', ["scrape.py"]);
process.stdout.on('data', function (data){
console.log("-> " + data.toString());
if ((data.toString().indexOf("done") > -1)) {
res.json({done: "done"});
}
});
});
但是大約1點30分之后,我仍然遇到相同的錯誤,並且控制台日志“超時”。為什么?
如果我使用持續20秒的Python腳本運行完全相同的代碼,則可以正常運行。
謝謝
為防止瀏覽器由於缺少響應而超時,您必須在超時內向其發送響應(根據測試,聲音類似90年代)。 這意味着您的應用程序很可能需要重新設計。 由於看起來不像在使用websocket,因此服務器上的所有內容都是無狀態的並且是同步的,因此您必須手動使請求成為偽異步的:
歷史模式是:
/refresh?token=1234
),在該/refresh?token=1234
,當請求時,在結果准備好時返回結果,否則返回狀態204之類的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.