NodeJS длинный пул для нескольких клиентов - PullRequest
0 голосов
/ 06 октября 2019

У меня есть микросервис, написанный на NodeJS, который принимает сообщения от RabbitMQ, и для типа сообщений "SessionStart" он выполняет рекурсивную функцию для выполнения длинных пулов GET-запросов. Таким образом, при запуске сеанса рекурсивная функция начинает повторять запросы GET, пока сеанс не будет активен. Каков наилучший способ обработки этого сценария в NodeJS для более параллельных сеансов, чтобы не блокировать цикл обработки событий и обрабатывать каждый запущенный сеанс, пока он не станет живым.

Простая схема моего решения представлена ​​ниже:

channel.consume(message => {
 if(message.type == "SessionStart") {
    longPoolForSession(message.sessionId);
 }
});

async function longPoolForSession(sessionId) {
    try {
        let response  = await request(`http://.../${sessionId}`);
        longPoolForSession(sessionId);
    } catch (error)
        // 404 Not Found - end of recursive calls
    }

}

Заранее спасибо!

...