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

Dim*_*man 8 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
Run Code Online (Sandbox Code Playgroud)

连接超时中间件也没有帮助,它只是在2分钟后继续关闭连接.尝试将节点版本更改为旧版本但没有成功.尝试在网上找到的所有变化,但连接仍然关闭...

Ion*_*ula 9

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 ****');
});
Run Code Online (Sandbox Code Playgroud)

或这个:

http.request(url).setTimeout()
Run Code Online (Sandbox Code Playgroud)

此外,它可能是一个浏览器问题.读这个.


Dim*_*man 1

经过几个小时的尝试每个可用的答案后,我已经使用 fiddler 对该请求进行了检查。事实证明,在我的开发环境中,我使用浏览器同步来在发生任何更改时自动刷新浏览器窗口。在 fiddler 中,我注意到长时间的上传 POST 请求浏览器同步将其绑定到一个有 2 分钟超时的套接字连接。

关闭浏览器同步代理后,第一个解决方案非常有效。

server.on('connection', function(socket) {
  socket.setTimeout(600 * 60 * 1000); // now works perfectly...
})
Run Code Online (Sandbox Code Playgroud)