リクエストの完了に2分以上かかったときはいつでも、そのとおりのメッセージが表示されていました。ブラウザはリクエストから切断されますが、バックエンドでのリクエストは完了するまで続行されました。サーバー(私の場合はASP.NET Web API)は切断を検出しません。
丸一日検索した後、私は最終的にこの答えを見つけました、あなたがプロキシ設定を使うなら、デフォルトのタイムアウトは120秒(または2分)ています。
したがって、プロキシ設定を編集して、必要なものに設定できます。
{
"/api": {
"target": "http://localhost:3000",
"secure": false,
"timeout": 6000000
}
}
今、私はそれをNTLM認証で動作させるために agentkeepaliveを使用していましたが、エージェントのタイムアウトがプロキシのタイムアウトと関係がないことを知らなかったため、両方を設定する必要があります。それを理解するのにしばらく時間がかかったので、ここに例を示します:
const Agent = require('agentkeepalive');
module.exports = {
'/api/': {
target: 'http://localhost:3000',
secure: false,
timeout: 6000000, // <-- this is needed as well
agent: new Agent({
maxSockets: 100,
keepAlive: true,
maxFreeSockets: 10,
keepAliveMsecs: 100000,
timeout: 6000000, // <-- this is for the agentkeepalive
freeSocketTimeout: 90000
}),
onProxyRes: proxyRes => {
let key = 'www-authenticate';
proxyRes.headers[key] = proxyRes.headers[key] &&
proxyRes.headers[key].split(',');
}
}
};
err
ないだけ-オブジェクトmessage