【问题标题】:Publish/subscribe per time interval in Meteor在 Meteor 中按时间间隔发布/订阅
【发布时间】:2017-01-03 12:56:25
【问题描述】:

我的情况如下: 我在 Mongo 中有一个集合,每隔几毫秒就会更新一次新项目,例如日志项目。我通过模板中的发布/订阅在前端显示这些项目,但由于数量庞大,列表更新如此频繁以至于难以阅读它们。我想要的是每隔(几)秒更新一次列表。我尝试在客户端和服务器端都使用睡眠/超时,例如 here 所示,但到目前为止没有成功。

  • 我仍然可以为此使用发布/订阅,还是应该使用 Meteor.setInterval 切换轮询机制?
  • 时间间隔部分应该在发布端还是在订阅端?
  • 如果发布/订阅对我的方案是正确的,我如何仅每隔几秒显示一次更新的数据?

【问题讨论】:

  • 你试过收集观察者吗?将您的列表作为文档添加到集合中?它不应该重新更新您的整个列表。

标签: meteor publish-subscribe reactive


【解决方案1】:

DDP 有一个速率限制器。它旨在击败 DDoS 攻击,但我想它可以重新用于您想要的用途。

https://blog.meteor.com/rate-limiting-in-meteor-core-762b8ad2412f#.nw6fwlhji

【讨论】:

    【解决方案2】:

    您应该能够在 Template.name.onCreated 中使用反应变量和自动运行来执行此操作:

    Template.name.onCreated(function(){
    var instance = this;
    instance.now = new ReactiveVar( new Date());
    instance.autorun(function(){
       var test = now.get();
       instance.subscribe('yourSubNameHere');
       setTimeout(function(){ //will update now and fire the autorun again
          instance.now.set(new Date());
       },timeoutHere)
    });
    )};
    

    虽然如果您的收藏变得很大,我建议您这样做可能会限制您的出版物?

    【讨论】:

    • 我不明白这是如何工作的。这不是一直在重新订阅吗?
    • 您的文档是在客户端还是服务器端添加的?
    • 我不明白重新订阅如何解决 OP 的问题。如果我理解正确,他的数据在第一次订阅时来得太快了。所以我试图了解后续重新订阅如何提供帮助。
    • 别担心!我一直在问,因为我想知道是否有一些我需要注意的隐藏订阅功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 2017-11-30
    • 2013-11-18
    • 2016-03-07
    相关资源
    最近更新 更多