@eifory
nodejs

Как реализовать таймаут ожидания GET запроса для leader election?

Пробую в учебных целях реализовать алгоритм leader Election.
Здесь ТЗ https://github.com/peterservice-rnd/new-job/blob/m...

Внутри функции, стартующей выборы есть участок кода, в котором надо задать таймаут ожидания
GET запроса для роута. Я не посылаю запросов, я жду запросов со стороны других нод.
router.get('/IAMTHEKING/:id', setLeaderId);
Что-то вроде
...
const setLeaderAnswerTimeout = new Promise((resolve, reject) => {
    timeoutId = setTimeout(() => reject('leaderAnswer timeout'), process.env.CHECK_PERIOD);
});

await Promise.race([setLeaderAnswerTimeout, waitLeaderAnswer]);
...

waitLeaderAnswer должен вернуть resolve если запрос пришел, если запроса нет, то по таймауту должен возвращаться reject.

Думал еще над вариантами request.timeout или мидлвару воткнуть.
  • Вопрос задан
  • 35 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы