Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Nodejs和express服务器在2分钟后关闭连接_Javascript_Node.js_Express - Fatal编程技术网

Javascript Nodejs和express服务器在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

我使用的是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 * 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个小时:(