Nodejs and express server closes connection after 2 minutes

前端 未结 3 1031
[愿得一人]
[愿得一人] 2021-01-02 07:29

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

相关标签:
3条回答
  • 2021-01-02 08:09

    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.

    0 讨论(0)
  • 2021-01-02 08:12

    how about:

    server.on('connection', function(socket) {
      socket.setTimeout(5 * 60 * 1000);
      socket.once('timeout', function() {
        process.nextTick(socket.destroy);
      });
    });
    
    0 讨论(0)
  • 2021-01-02 08:26

    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...
    })
    
    0 讨论(0)
提交回复
热议问题