#node.js #express #request #pipe
Вопрос:
У нас есть прокси-сервер. Когда я отправляю ему запрос, он отправляет запрос на другой сайт через прокси-сервер, получает ответ, обрабатывает его и возвращает клиенту. Текущая реализация заключается в следующем:
var app = express();
const myrequest = require('request');
app.get("/*", urlencodedParser, async function (request, response) {
myrequest({
url: 'https://google.com'
}).pipe(response);
}
Однако, если я хочу обработать ответ, а обработка требует времени, я больше не могу вернуть ответ клиенту
Не работает:
var app = express();
const myrequest = require('request');
async function timeout(ms) {
return new Promise((resolve) => {
setTimeout(() => resolve(), ms)
})
}
app.get("/*", urlencodedParser, async function (request, response) {
myrequest({
url: 'https://google.com'
}, function(resp){
if(cond1){
await timeout(5000); //abstract function, need time to complite
}
resp.pipe(response); //Not work, empty response in browser
//or
response.set(resp.headers);
response.write(resp.body);
response.end(); //Not work, ERROR_INCOMPLETE_CHUNKED_ENCODING in browser
});
}
Помогите, пожалуйста!