正确的节点长轮询方式

时间:2013-05-02 20:16:44

标签: javascript node.js long-polling

似乎有很多关于如何做到这一点的讨论,但我没有找到任何具体的例子。我的节点应用程序正在访问将要传递到数据库的RESTful API。我最初的解决方案就是这个

function getRecord() {
    var req = https.request(options, function(res){
        res.on('data', function(data) {
            var record = JSON.parse(data.toString('utf-8'));
            //do some database things then do it all over
            getRecord();
        });
    });
    req.write(queryString);
    req.end();
}

这实现了我想要的。我将继续从API中获取新记录,但我不确定这是否是做我想要的最佳方法。

1 个答案:

答案 0 :(得分:1)

一种(特别有利的)替代方案是使用消息服务器(如RabbitMQ)切换到总线体系结构。

您需要控制API或拥有可以使用。注册回调的API。

长轮询是一种可以很快降低性能和膨胀日志的策略。事件驱动的方法,如我上面列出的,如果有可能的话,是非常优选的。并且,与长轮询不同,事件驱动策略不会引入任何延迟。因此,如果延迟是一个问题,您轮询的频率越高,它就越会降低性能和膨胀日志。