当客户订阅发布时,我知道有两个选项:{reactive:true(默认)}和{reactive:false}。
如果我们使用Meteor,我们很可能想要使用反应性,但有时候我不需要实时更新,而是接近它。如何设置pub / sub的间隔刷新率?
另一种情况:我已经说过,300个客户订阅了一个发布,数据发生了变化,所有客户端同时收到了DDP更改消息。我可以在每次客户端更新之间创建某种延迟吗?我不希望CPU上的负载很高,用户注意到应用程序没有像往常一样快速响应。
你可能会问自己:为什么这个人想要这样做?当您开始获得大量客户端时,由于所有实时更新,应用程序可能会很快变慢。在我的场景中,我不需要实时更新,但有些更接近它。示例:10秒刷新率。
答案 0 :(得分:0)
这是一个基本想法(未经测试,对不起错误,但你明白了):
var CatsProxy = new Meteor.Collection('CatsProxy')
if (Meteor.isServer) {
var Cats = new Meteor.Collection('Cats') // private, on server only
/* ... something causes Cats objects to be updated every half second ... */
// outside of a reactive context:
setInterval(function() {
var cat = Cats.find({_id: 123})
CatsProxy.update({_id: cat._id}, cat);
}, 60000) // once a minute
Meteor.publish("cats", function () {
return CatsProxy.find({_id: 123});
});
}
if (Meteor.isClient) {
Meteor.subscribe("cats");
Template.cats.helpers({
cat: function() {
// this is reactive
return CatsProxy.find({_id: 123})
}
})
}

现在cats
模板每分钟只更新一次,而不是每秒更新两次。