1

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

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

2 回答 2

1

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

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

于 2017-01-03T13:41:48.203 回答
-1

您应该能够在 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)
});
)};

尽管如果您的收藏变得很大,我建议您在出版物中进行限制吗?

于 2017-01-04T10:37:37.737 回答