似乎有很多关于如何做到这一点的讨论,但我还没有找到任何具体的例子。我的 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/