2015-10-01 12 views
5

Im przy użyciu Express 4.X i węzła js 0.12.Serwer Nodejs i Express zamyka połączenie po 2 minutach

Jedna z moich tras służy do przesyłania i przetwarzania plików, a w przypadku niektórych plików przesyłanie i przetwarzanie trwa dłużej niż 2 minuty domyślnego limitu czasu. Próbowałem ustawić outime na wartości dłuższe niż 2 minuty, ale po prostu nie działa, serwer zamyka połączenie dokładnie po 2 minutach za każdym razem.

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 

Nie pomaga również oprogramowanie pośrednie czasu połączenia, po prostu zamyka połączenie po dokładnie 2 minutach. Próbowałem zmienić wersję węzła na starszą wersję, ale bez powodzenia. Próbowano wszystkich odmian znalezionych w trybie online, ale połączenie nadal jest zamykane ...

+0

Możliwe duplikat [Express.js reakcji limit_czasu] (http://stackoverflow.com/questions/21708208/express-js-response-timeout) – Ionut

+0

Próbowano że no, połączenia wyników pośredniej w taki sam 2-minutowy limit czasu ... –

+0

Przeczytaj ostatnią odpowiedź z tej strony. – Ionut

Odpowiedz

-1

Po kilku godzinach próbując odpowiedzieć na każdy dostępny miałem uruchomić inspekcję z Skrzypek na tę prośbę. Okazuje się, że w moim środowisku programistycznym używam automatycznej synchronizacji przeglądarki do automatycznego odświeżania okna przeglądarki przy każdej zmianie. W skrzypku zauważyłem, że długi z wysyłką żądania POST przeglądarki-synchronizacji przywiązał go do połączenia z gniazdem, który miał 2 minuty czasu oczekiwania.

po wyłączeniu proxy synchronizacji przeglądarki pierwsze rozwiązanie zadziałało jak czar.

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

server.setTimeout() to metoda ustawiająca limit czasu połączenia HTTP dla wszystkich połączeń.

2 minuty są domyślne.

AKTUALIZACJA ODPOWIEDŹ

Spróbuj tego:

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

albo to:

http.request(url).setTimeout() 

Ponadto, może on być związany z przeglądarką. Przeczytaj this.

+0

Próbowałem, że nadal zamyka połączenie po 120000ms –

+0

Zaktualizowałem swoją odpowiedź. Spróbuj teraz. – Ionut

1

jak about:

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

Jak wspomniano, oprogramowanie pośredniczące Timeout nie działa zgodnie z oczekiwaniami, połączenie zostanie zamknięte po 2 minutach. –

+0

Widziałem to, więc aktualizowałem swoją odpowiedź, sprawdź teraz (: – num8er

+0

Nie, wciąż to samo :(To mnie doprowadziło do szaleństwa, a najbardziej zwariowana część przed miesiącem pójście do socket.setTimeout() naprawiło i nagle 2 dni temu wróciło bez żadnego powodu: –

Powiązane problemy