node - Express.js solicitud HTTP tiempo de espera
node express api (2)
Me preguntaba si alguien podría decirme cuál es el tiempo de espera predeterminado de solicitud HTTP cuando se usa Express.
Lo que quiero decir con esto es: ¿después de cuántos segundos de tratar con una solicitud http el servidor Express / Node.js cerrará la conexión, cuando el navegador o el servidor cerraron la conexión manualmente?
¿Cómo modifico este tiempo de espera para una ruta única? Me gustaría establecerlo en unos 15 minutos para una ruta especial de conversión de audio.
Muchas gracias.
Tom
req.connection.setTimeout(ms);
parece establecer el tiempo de espera de solicitud para un servidor HTTP en Node.js.
req.connection.setTimeout(ms);
podría ser una mala idea ya que se pueden enviar múltiples solicitudes en el mismo socket.
Pruebe connect-timeout o use esto:
var errors = require(''./errors'');
const DEFAULT_TIMEOUT = 10000;
const DEFAULT_UPLOAD_TIMEOUT = 2 * 60 * 1000;
/*
Throws an error after the specified request timeout elapses.
Options include:
- timeout
- uploadTimeout
- errorPrototype (the type of Error to throw)
*/
module.exports = function(options) {
//Set options
options = options || {};
if(options.timeout == null)
options.timeout = DEFAULT_TIMEOUT;
if(options.uploadTimeout == null)
options.uploadTimeout = DEFAULT_UPLOAD_TIMEOUT;
return function(req, res, next) {
//timeout is the timeout timeout for this request
var tid, timeout = req.is(''multipart/form-data'') ? options.uploadTimeout : options.timeout;
//Add setTimeout and clearTimeout functions
req.setTimeout = function(newTimeout) {
if(newTimeout != null)
timeout = newTimeout; //Reset the timeout for this request
req.clearTimeout();
tid = setTimeout(function() {
if(options.throwError && !res.finished)
{
//throw the error
var proto = options.error == null ? Error : options.error;
next(new proto("Timeout " + req.method + " " + req.url) );
}
}, timeout);
};
req.clearTimeout = function() {
clearTimeout(tid);
};
req.getTimeout = function() {
return timeout;
};
//proxy end to clear the timeout
var oldEnd = res.end;
res.end = function() {
req.clearTimeout();
res.end = oldEnd;
return res.end.apply(res, arguments);
}
//start the timer
req.setTimeout();
next();
};
}