Задать вопрос

Как обработать ошибку socket hang up?

В Украине у нас есть API налоговой. Иногда сервер ложится, так что это socket hang up - это нормально. И мне нужно обработать эту ошибку, потому что моя программа останавливается. Я пробовал несколько вариантов, но ничего не работает.
export function query(method, toUrl, headers, payload, cb) {
    try {
        let parsed = url.parse(toUrl);
        let req = http.request({
            host: parsed.host,
            path: parsed.path,
            headers: headers,
            method: method,
        }, res => {
            let chunks = [];
            res.on("data", chunk => {
                chunks.push(chunk);
            });
            res.on("end", () => {
                cb(Buffer.concat(chunks));
            });
            res.on("error", () => {
                console.log("SOCKET ERR!!!");
                req.end();
                cb(null);
            });
        });
        req.on("error", e => {
            console.log("SOCKET ERR!!!");
            req.end();
            cb(null);
        });
        req.write(payload);
        req.end();
    }
    catch(e) {
        console.log("Error in query function: " + e.message);
    }
}

Попробовал еще так:
process.on('uncaughtException', (err) => {
    console.log(err);
})

Но программа выкидывает ошибку и просто останавливается. функция queryпросто не ловит ошибки. Только process.on ловит ошибку, но все равно останавливается.
Еще пробовал так:
process.on('uncaughtException', (err) => {
    console.log(err);
    startAsyncTasksFunction() // this is my main function
})

То есть когда выкидывает uncaughtException, я просто запускаю основную функцию программы. Приложение не останавливается, и у меня запущено 2 startAsyncTasksFunction, что вызывает еще больше проблем.
  • Вопрос задан
  • 718 просмотров
Подписаться 1 Средний 3 комментария
Пригласить эксперта
Ответы на вопрос 1
@arthurlomakin Автор вопроса
Решил проблему с помощью PM2 Manager. Короче, буду переходить на .NET, так как все равно такой вариант не устраивает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы