NodeJS为多个客户端提供长池

时间:2019-10-06 16:54:04

标签: node.js long-polling

我有一个用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
    }

}

提前谢谢!

0 个答案:

没有答案
相关问题