Я использую запрос-обещание в своем приложении Node.js для использования серверных служб, заметил, что служба возвращает ошибку "зависание сокета". Основываясь на рекомендации повторять такие неудачные запросы, я определил прокси-сервер для «запроса-обещания», добавив логику повторных попыток, используя promise-retry . Из кода, используя этот прокси вместо запроса-обещания. Повторная попытка происходит, но заметил, что ни одна из них не была успешной - всегда выдает «повторные запросы завершились неудачно» с ошибкой, которую я выдаю при неудачной повторной попытке. Я хотел знать, был ли неправильный способ определения прокси . Я вставляю код (убрал операторы импорта). Благодарим за помощь в выявлении любой ошибки кодирования.
const rpProxy = {
apply: (target, thisArg, argumentsList) => {
return requestPromiseWithRetry(target(argumentsList[0]));
}
}
export const requestPromiseWithRetry = (promise: Promise<any>, retryOptions?): Promise<any> => {
var options = {retries: 2, minTimeout: 300}
return promiseRetry(options, function (retry, number) {
return promise
.catch((err) => {
if(err.message && err.message.indexOf("socket hang up")>-1){
console.log(err);
retry(err);
}
throw err;
})
}).then((value) => {
return value;
}, (err) => {
throw new Error(`retried requests failed with ${err.message}`);
});
}
export const rpWithRetry = new Proxy(rp, rpProxy);