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

时间:2014-12-23 01:19:51

标签: meteor publish-subscribe reactive-programming

当客户订阅发布时,我知道有两个选项:{reactive:true(默认)}和{reactive:false}。

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

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

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

1 个答案:

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