javascript - Node 长轮询的正确方法

标签 javascript node.js long-polling

似乎有很多关于如何做到这一点的讨论,但我还没有找到任何具体的例子。我的 Node 应用程序正在访问一个即将传递到数据库的 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 获取新记录,但我不确定这是否是实现我想要的效果的最佳方法。

最佳答案

一个(特别有利的)替代方案是切换到具有消息服务器(例如 RabbitMQ)的总线架构。

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

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

关于javascript - Node 长轮询的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16346957/

相关文章:

php - 使用 codeigniter 和 node.js 进行长轮询

javascript - 显示使用 Ajax 加载的 Bootstrap 选项卡在第一次单击时不起作用

javascript - 递归构建对象

sockets - Nodejs : How to catch exception in net. createServer.on ("data",...)?

node.js - 错误 : ENOENT, 没有这样的文件或目录 - 通过管道传输到 fs.createWriteStream 的 fs.createReadStream

php - jquery ajax 多个请求

javascript - jQuery Accordion 的简单问题

javascript - 滚动上的动画计数器未全部加载

node.js - 通过 Async.js 对 MongoDB 进行并行查询

ajax,长轮询和管理两分钟重试