Witam
Mam problem z implementacją techniki Long Polling. W poniższym przykładzie uploaduję 6 razy jakiś plik na serwer (myślę, że jest to zrozumiałe):
var fileCounter = 0;
for (var loop = 0; loop < 6; loop++) {
var form = $submitFileForm[0];
var data = new FormData(form);
$.ajax({
type: "POST",
enctype: "multipart/form-data",
url: "/uploads",
data: data,
processData: false,
contentType: false,
cache: false,
timeout: 600000,
success: function(data) {
fileCounter++;
if (fileCounter >= 6) {
console.log("OK");
}
},
error: function(error) {
console.log("ERROR");
}
});
}
Teraz chciałbym, żeby serwer zwracał odpowiedź co 3 żądania (co 3 uploadowane pliki). Kod serwera w Node.js jaki znalazłem w Internecie:
app.post("/uploads", function(req, res) {
requestCounter++;
var room = "room_abc";
responses[room].push(res);
console.log(currentTime() + " - Otworzono nowe połączenie HTTP!");
if (requestCounter % 3 == 0) {
responses["room_abc"].forEach((res) => {
upload(req, res, function(error) {
if (error) {
return res.end("ERROR");
}
res.end("OK");
console.log("Upload OK");
});
});
console.log(currentTime() + " - Zamknięto połączenie HTTP!");
}
});
Niestety po wykonaniu aplikacji otrzymuję inne wyniki tzn. plik jest uploadowany aż 9 razy tak jak widać na poniższych screenshotach:
obraz 1 obraz 2
Jak powinienem zmienić kod aby otrzymać w konsoli wyniki jak poniżej:
09:45:16 - Serwer został uruchomiony na porcie 8080!
09:45:22 - Nawiązano połączenie z nowym klientem o ID oA13k0mCxbzQP4XWAAAA!
09:45:40 - Transfer pliku xxx w 6 żądaniach przy 3 żądaniach na połączenie
09:45:40 - Otworzono nowe połączenie HTTP!
Upload OK
09:45:40 - Otworzono nowe połączenie HTTP!
Upload OK
09:45:40 - Otworzono nowe połączenie HTTP!
Upload OK
09:45:40 - Zamknięto połączenie HTTP!
09:45:40 - Otworzono nowe połączenie HTTP!
Upload OK
09:45:40 - Otworzono nowe połączenie HTTP!
Upload OK
09:45:40 - Otworzono nowe połączenie HTTP!
Upload OK
09:45:40 - Zamknięto połączenie HTTP!
09:45:40 - Transfer plików zakończony!
Z góry dziękuję za pomoc i pozdrawiam ;)