[英]Nodejs and express server closes connection after 2 minutes
我使用Express 4.X和節點js 0.12。
我的一條路線是文件上傳和處理,對於某些文件,上傳和處理需要超過2分鍾的默認超時。 我試圖將timeout設置為超過2分鍾的值,但它只是不工作,服務器每次2分鍾后正好關閉連接。
server.timeout = 60 * 60 * 1000; // still closes after 2 minutes
server.on('connection', function(socket) {
socket.setTimeout(700 * 1000); // still closes after 2 minutes
});
res.setTimeout(0);// still closes after 2 minutes
req.setTimeout(0);// still closes after 2 minutes
res.connection.setTimeout(0);// still closes after 2 minutes
連接超時中間件也沒有幫助,它只是在2分鍾后繼續關閉連接。 嘗試將節點版本更改為舊版本但沒有成功。 嘗試在網上找到的所有變化,但連接仍然關閉...
server.setTimeout()是為所有連接設置HTTP連接超時的方法。
2分鍾是默認的。
更新的答案
嘗試這個:
var express = require('express'); var http = require('http'); var app = module.exports.app = express(); var server = http.createServer(app); server.setTimeout(10*60*1000); // 10 * 60 seconds * 1000 msecs server.listen(appConfig.port, function () { var logger = app.get('logger'); logger.info('**** STARTING SERVER ****'); });
或這個:
http.request(url).setTimeout()
此外,它可能是一個瀏覽器問題。 讀這個 。
怎么樣:
server.on('connection', function(socket) {
socket.setTimeout(5 * 60 * 1000);
socket.once('timeout', function() {
process.nextTick(socket.destroy);
});
});
經過幾個小時的嘗試,每個答案都可用,我已經與提琴手一起檢查了這個請求。 事實證明,在我的開發環境中,我使用瀏覽器同步來自動刷新任何更改的瀏覽器窗口。 在fiddler中,我注意到上傳POST請求瀏覽器同步很長時間將其綁定到有2分鍾超時的套接字連接。
關閉瀏覽器同步代理后,第一個解決方案就像魅力一樣。
server.on('connection', function(socket) {
socket.setTimeout(600 * 60 * 1000); // now works perfectly...
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.