4

有趣的问题:我有一个 MongoDb 集合,我正在更新服务器端,Meteor 客户端挂钩到同一个集合中。我注意到 mongo-cursor(服务器端)插入记录到客户端的延迟约 10 秒。

这就是问题所在:如果我通过 Meteor 客户端(通过 Chrome 控制台)进行相同的插入,客户端和所有其他附加的更新都具有亚秒级的响应时间。

服务器端插入 Mongo 与客户端之间存在很大差异 - 不知何故,客户端插入传播并推送到其他客户端速度比我通过 MongoDb shell 手动插入文档要快得多。

对此有什么想法吗?我确定我错过了什么...

4

1 回答 1

3

Meteor mongo 驱动程序每 10 秒轮询一次 Mongo 中的更改,以确保从 Meteor 外部写入其中的数据向下传递到客户端。这是相关的源代码

  // every once and a while, poll even if we don't think we're dirty,
  // for eventual consistency with database writes from outside the
  // Meteor universe
  var intervalHandle = Meteor.setInterval(
    _.bind(self._ensurePollIsScheduled, self), 10 * 1000 /* 10 seconds */);
    self._stopCallbacks.push(function () {
    Meteor.clearInterval(intervalHandle);
  });

根据核心开发者之一 Matt Debergalis 的说法,这种行为可能会改变

这种轮询是为了让 Meteor 注意到不是通过 Meteor 服务器进程来的 DB 更改。

但是,许多应用程序不需要这个。我们正在考虑禁用它的方法。我们在漏斗中也有一个更有效的实现。

于 2013-02-01T02:17:15.240 回答