Im using Express 4.X and node js 0.12.
One of my routes is for file uploading and processing and for some of the files the upload and process takes more than the 2 m
server.setTimeout() is the method that sets the HTTP connection timeout for all connections.
The 2 minutes are default.
UPDATED ANSWER
Try this:
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 ****');
});
Or this:
http.request(url).setTimeout()
Also, it can be a browser issue. Read this.
how about:
server.on('connection', function(socket) {
socket.setTimeout(5 * 60 * 1000);
socket.once('timeout', function() {
process.nextTick(socket.destroy);
});
});
After a few hours of trying every answer available I had run an inspection with fiddler for that request. Turns out that in my development environment im using browser-sync for auto refreshing the browser window on any change. In fiddler i noticed that a long with the upload POST request browser-sync tied it to a socket connection which had 2 minute timeout.
after switched off the browser-sync proxy the very first solution worked like a charm.
server.on('connection', function(socket) {
socket.setTimeout(600 * 60 * 1000); // now works perfectly...
})