2016-05-04 13 views
1

Ich benutze ExpressJS-Framework und mit jQuery, um eine Ajax-Anfrage an den Server zu senden. Diese Ajax-Anforderung sendet eine Anforderung für eine große Anzahl von Elementen nacheinander an eine API auf dem Server und benötigt ausreichend lange Zeit (ungefähr 10 Minuten für 100 Elemente).Ajax Anfrage mehrere Wiederholungen in NodeJS für eine zeitaufwendige Anfrage

Das Problem ist, dass, während der Server mit der API kommuniziert und etwa 30 Elemente verarbeitet hat, der Browser die gleiche Ajax-Anforderung (die auf eine Antwort vom Server wartet) erneut sendet. Dies führt dazu, dass mehrere Ajax-Anfragen auf dem Server bearbeitet werden. Was ist die Lösung dafür?

+0

Es ist nicht klar, was Sie fragen. Bitte zeigen Sie Ihren Code, wenn Sie möchten, dass Forklists Ihnen helfen, es herauszufinden. – Paul

+0

@Paul Code ist ziemlich groß. Das Problem ist sehr allgemein. Ich sende eine Ajax-Anfrage. Der Server benötigt viel Zeit, um die Anfrage abzuschließen. Aber anstatt nur auf die Antwort zu warten, sendet der Browser die Ajax-Anforderung erneut nach z. nach 2 Minuten. Jetzt bearbeitet der Server 2 Anfragen gleichzeitig. –

+0

Ok, viel Glück damit. – Paul

Antwort

0

Ich löste mein Problem durch Setzen server.timeout in /bin/www Datei. Wie ich erwähnt habe, benutze ich das Express-Framework von NodeJS und wenn ich server.timeout auf einen Wert, sagen wir 30 Minuten, setze, wartet der Browser 30 Minuten lang auf die Ajax-Antwort und sendet keine neue Anfrage. Hier ist, wo ich den Timeout-Wert in meinem www Datei hinzugefügt:

var server = app.listen(app.get('port'), function() { 
    debug('Express server listening on port ' + server.address().port); 
    console.log('Express server listening on port ' + server.address().port + ' in '+process.env.NODE_ENV+' mode.'); 
}); 
server.timeout = 30*60*1000; // for 30 minutes