我正在使用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分钟后继续关闭连接。尝试将节点版本更改为旧版本但没有成功。 尝试了在线发现的所有变化,但连接仍然关闭...
答案 0 :(得分:8)
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()
此外,它可能是一个浏览器问题。阅读this。
答案 1 :(得分:1)
怎么样:
server.on('connection', function(socket) {
socket.setTimeout(5 * 60 * 1000);
socket.once('timeout', function() {
process.nextTick(socket.destroy);
});
});
答案 2 :(得分:-1)
经过几个小时的尝试,每个答案都可用后,我已经与小提琴手进行了检查。事实证明,在我的开发环境中,我使用 browser-sync 在任何更改时自动刷新浏览器窗口。在fiddler中,我注意到上传POST请求浏览器同步很长时间将其绑定到有2分钟超时的套接字连接。
关闭浏览器同步代理后,第一个解决方案就像魅力一样。
server.on('connection', function(socket) {
socket.setTimeout(600 * 60 * 1000); // now works perfectly...
})