Итак, моя проблема в том, что когда я отправляю несколько запросов на мой wesbervice, использующий скребок casperjs (используя что-то вроде почтальона), он падает, когда я пытаюсь записать ответ обратно клиенту, потому что (я думаю) ответ закрывается отПервый запрос до второго запроса успевает завершиться.Вот сокращенная версия моего кода:
var server = require('webserver').create();
var fs = require('fs');
var utils = require('utils');
var adminLogin = JSON.parse(fs.read('./config.json'));
var casper = require('casper').create({
pageSettings: {
loadImages: true,
userAgent: 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0'
},
clientScripts: [
'./node_modules/jquery/dist/jquery.min.js'
]
});
var ip_server = '127.0.0.1:3000';
var showMoreSelector = "a.button";
function step() {
...
}
var service = server.listen(ip_server, function (req, res) {
var results;
var parameters = req.url;
var userID = parameters.substring(parameters.indexOf("?user=") + 6);
casper.start('https://someurl.com')
.then(function(){
...
});
casper.wait(2000, function() {
...
})
.thenOpen("https://someurl", function() {
...
})
.then(step)
.then(function() {
...
});
casper.run(function() {
//HERE is where the issue lies when sending multiple requests at once
res.statusCode = 200;
res.setHeader("Content-Type", "application/json");
res.write(JSON.stringify(results));
res.close();
});
})
console.log('Server running at http://' + ip_server+'/');
И вот ошибка, которую я получаю, когда второй запрос пытается завершиться:
Error: cannot access member `statusCode' of deleted QObject
Так что в основном мой вопрос, как я могусделать что-то вроде: оставить ответ открытым, пока все запросы не будут выполнены?Или есть лучший способ справиться с этим?