具有两种不同应用的流星观测器

Meteor observer with two different applications

因为更改的数据(由应用程序 A 插入)需要实时显示在应用程序 B 中,我们决定使用 .find().observe(...)

看起来像:

App A   ->    Insert   ->   mongodb    <- observe  -> publish   -> Display App B

这工作正常,但在插入 A 和显示 B 之间有大约 3-5 秒的延迟。我该如何更改它?

最初我认为,Oplog-Observe-Driver 在 Meteor > Version 1 中是默认的,并且会实时做出反应。它仍然是 POLL 还是有其他延迟的原因????

感谢您的解释。

如果您使用的是 Oplog,那么更改会立即生效。如果您使用的是轮询,那么它会像您所写的那样花费几秒钟。 您需要正确设置 MONGO_OPLOG_URL 才能使其正常工作。 (当然,您的 MongoDB 需要启用 Oplog。)

此外,如果您处于反应式上下文中,则无需使用 find().observe()find() 就足够了。在服务器上,您可能需要 find().observe(),具体取决于您在做什么。

你用过DDP.connect吗?您还必须使用 onReconnect

Remote = DDP.connect('http://yourremoteserver');
MyCollection = new Mongo.Collection('same_name', Remote);

// do whatever you need with collection

let watchCollection = function (query={}, project={}) {
  return MyCollection.find(query, project).observe({
    changed: function () { console.log('Something changed!') }
  });
}
DDP.onReconnect(watchCollection);