有趣的问题:我有一个MongoDb集合,我正在更新服务器端,Meteor客户端挂钩到同一个集合中。我注意到mongo-cursor(服务器端)插入记录的延迟时间为10秒,以便向客户端发送。
这就是问题:如果我通过Meteor客户端进行相同的插入(通过Chrome控制台),客户端和所有其他附件都会以亚秒响应时间进行更新。
Mongo与客户端之间的服务器端插入之间存在非常大的差异 - 客户端插入以某种方式传播通过并推送到其他客户端很多比我更快通过MongoDb shell手动插入文档。
有关于此的任何想法吗?我确定我错过了什么......
答案 0 :(得分:3)
meteor mongo驱动程序每10秒调查一次Mongo中的更改,以确保从Meteor外部写入数据的数据向下移动到客户端。这是相关的source code:
// 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);
});
此行为可能会更改 per Matt Debergalis, one of the core devs:
此轮询是为了让Meteor注意到未通过Meteor服务器进程的数据库更改。
但是,很多应用程序都不需要这样做。我们正在考虑禁用它的方法。我们在料斗中也有更高效的实施方式。