Nodejs和express服务器在2分钟后关闭连接

时间:2015-10-01 08:07:26

标签: javascript node.js express

我正在使用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分钟后继续关闭连接。尝试将节点版本更改为旧版本但没有成功。 尝试了在线发现的所有变化,但连接仍然关闭...

3 个答案:

答案 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...
})