Javascript Nodejs和express服务器在2分钟后关闭连接
我使用的是Express 4.X和node js 0.12 我的路线之一是文件上传和处理,对于一些文件,上传和处理需要超过2分钟的默认超时时间。我试图将超时设置为2分钟以上的值,但它不起作用,服务器每次正好在2分钟后关闭连接Javascript Nodejs和express服务器在2分钟后关闭连接,javascript,node.js,express,Javascript,Node.js,Express,我使用的是Express 4.X和node js 0.12 我的路线之一是文件上传和处理,对于一些文件,上传和处理需要超过2分钟的默认超时时间。我试图将超时设置为2分钟以上的值,但它不起作用,服务器每次正好在2分钟后关闭连接 server.timeout = 60 * 60 * 1000; // still closes after 2 minutes server.on('connection', function(socket) { socket.setTimeout(700 * 100
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分钟后继续关闭连接。尝试将节点版本更改为旧版本,但未成功。
尝试了联机找到的所有变体,但连接仍然关闭…是为所有连接设置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秒*1000毫秒
侦听(appConfig.port,函数(){
var logger=app.get('logger');
logger.info(“****启动服务器****”);
});代码>那么:
server.on('connection', function(socket) {
socket.setTimeout(5 * 60 * 1000);
socket.once('timeout', function() {
process.nextTick(socket.destroy);
});
});
在尝试了几个小时的每一个答案后,我和fiddler一起检查了这个请求。事实证明,在我的开发环境中,我使用浏览器同步在任何更改时自动刷新浏览器窗口。在fiddler中,我注意到upload POST请求浏览器的长时间同步将其绑定到一个有2分钟超时的套接字连接
关闭浏览器同步代理后,第一个解决方案的效果非常好
server.on('connection', function(socket) {
socket.setTimeout(600 * 60 * 1000); // now works perfectly...
})
同样,连接中间件可能会导致相同的2分钟超时…请阅读该页面的最后一个答案。抱歉,不太确定您希望我在那里阅读什么。正如我已经说过的,我尝试了他们的所有建议,但没有一个有效。如果您使用的是Express4.X,其中超时中间件已被删除,那么需要手动添加它。你做到了吗?尝试了120000M后仍然关闭连接如前所述,超时中间件没有按预期工作连接在2分钟后关闭。我看到了它,所以我正在更新我的答案,现在检查(:不,仍然是一样的:(这让我疯狂,最疯狂的部分是在一个月前进入套接字。setTimeout()确实修复了此问题,但2天前它突然无缘无故地返回。问题是浏览器一直在同步…它打开了请求的并行套接字,我猜无论服务器配置如何,该请求的内部超时为2分钟。在关闭初始套接字后。setTimeout(600*60*1000);效果很好。感谢上帝,我花了大约4个小时:(