2015-10-01 13 views
5

Im utilizzando Express 4.X e node js 0.12.Nodejs e Express Server chiudono la connessione dopo 2 minuti

Uno dei miei percorsi è per il caricamento e l'elaborazione di file e per alcuni file il caricamento e l'elaborazione richiedono più del timeout predefinito di 2 minuti. Ho provato a impostare i valori su più di 2 minuti ma non funziona, il server chiude la connessione esattamente dopo 2 minuti ogni volta.

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 

Il middleware connect-timeout non è nemmeno aiutato, continua a chiudere la connessione dopo esattamente 2 minuti. Ho provato a cambiare la versione del nodo in una versione precedente ma senza successo. Provato tutte le varianti trovate online, ma la connessione si chiude ancora ...

+0

Eventuali duplicati di [Express.js Timeout risposta] (http://stackoverflow.com/questions/21708208/express-js-response-timeout) – Ionut

+0

provato che come-bene, collegare i risultati middleware nella stessa 2 minuti di timeout ... –

+0

Leggi l'ultima risposta da quella pagina. – Ionut

risposta

-1

Dopo qualche ora di cercare ogni risposta disponibili avevo corso un sopralluogo con violinista per quella richiesta. Risulta che nel mio ambiente di sviluppo im utilizzando la sincronizzazione del browser per l'aggiornamento automatico della finestra del browser in qualsiasi modifica. Nel violinista ho notato che a lungo con il caricamento della richiesta POST la sincronizzazione del browser l'ha legata a una connessione socket che aveva un timeout di 2 minuti.

dopo aver spento il proxy di sincronizzazione del browser, la prima soluzione ha funzionato come un incantesimo.

server.on('connection', function(socket) { 
    socket.setTimeout(600 * 60 * 1000); // now works perfectly... 
}) 
4

server.setTimeout() è il metodo che imposta il timeout della connessione HTTP per tutte le connessioni.

I 2 minuti sono predefiniti.

RISPOSTA AGGIORNATO

Prova questo:

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 ****'); 
 
});

O questo:

http.request(url).setTimeout() 

Inoltre, può essere un problema di browser. Leggi this.

+0

Provato che chiude ancora la connessione dopo 120000 ms –

+0

Ho aggiornato la mia risposta. Prova ora. – Ionut

1

come circa:

server.on('connection', function(socket) { 
    socket.setTimeout(5 * 60 * 1000); 
    socket.once('timeout', function() { 
    process.nextTick(socket.destroy); 
    }); 
}); 
+0

Come accennato, il middleware di timeout non funziona come previsto, la connessione si chiude dopo 2 minuti. –

+0

L'ho visto, quindi stavo aggiornando la mia risposta, controlla ora (: – num8er

+0

No, ancora lo stesso :(Mi ha fatto impazzire, e la parte più folle che prima di un mese un go il socket.setTimeout() ha risolto thaht e improvvisamente 2 giorni fa è tornato senza alcun motivo –

Problemi correlati