有可能控制流星的反应性吗?



当客户端订阅发布时,我知道有 2 个选项:{reactive:true (default(} 和 {reactive:false}。

如果我们使用的是 Meteor,我们很可能想要使用反应性,但有时我不需要实时更新,而是接近它。如何为发布/订阅设置间隔刷新率?

另一种情况:假设有 300 个客户端订阅了一个发布,数据发生了变化,所有客户端同时收到 DDP 更改消息。我可以在每个客户端更新之间创建某种延迟吗?我不希望 CPU 负载过高,用户注意到应用程序的响应速度不如平时快。

你可能会问自己:为什么这家伙要这样做?当您开始获得大量客户端时,由于所有实时更新,应用程序可能会很快变慢。在我的场景中,我不需要实时更新,但需要一些接近它的东西。示例:10 秒刷新率。

这是一个基本的想法(未经测试,很抱歉错误,但你明白了(:

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模板每分钟仅更新一次,而不是每秒更新两次。

最新更新