所以我在我的应用程序中有一些东西,我不需要立即反应,并在文档中找到有关属性 pollingThrottleMs 和 pollingIntervalMs 的内容。所以这里基本上是我设法找到的那些属性的所有信息:
pollingIntervalMs Number (仅限服务器)在服务器上观察时轮询此查询的频率。以毫秒为单位。默认为10秒。
pollingThrottleMs数字 (仅限服务器)重新轮询之间允许的最短时间。增加这个将节省CPU和mongo负载,但代价是更慢的更新 用户。不建议减少这种情况。以毫秒为单位。默认 到50毫秒。
所以第一个问题 - 我不清楚这些属性之间有什么区别,也许有人可以向我解释一下? (pollingThrottleMs是订阅更新的速率限制,pollingIntervalMs是我们检查更新的频率,据我所知)还pollingIntervalMs默认为10s?真?为什么该物业名称中有Ms?这不可能是正确的。
然后我尝试在我的查询中设置这些属性:
Meteor.publish("currentRoom", function (roomName) {
return Rooms.find({name: roomName}, {
pollingThrottleMs: 5000,
pollingIntervalMs: 5000
});
});
我预计在一个客户端的更新和另一个客户端的反应更新之间有5秒的延迟,但它似乎根本不起作用。我甚至把断点放在观察中,并立即通知。难道我做错了什么?它是如何工作的?
答案 0 :(得分:2)
那些10秒应该是10毫秒。
请确保您只更新MongoDB而不是Minimongo - 例如,如果您通过Meteor方法更新,请确保您没有客户端存根。
试试这个:
Meteor.publish("currentRoom", function (roomName) {
return Rooms.find({name: roomName}, {
disableOplog: true,
pollingThrottleMs: 10000,
pollingIntervalMs: 10000
});
});
您必须禁用oplog拖尾。如果不这样做,每次MongoDB日志更改时,您仍会收到通知。
我在客户端上与观察者进行了测试,但它确实有效。
Cursor.observe({
changed: (newdoc, olddoc) => {
console.log('changed');
}
});
其他信息:
https://github.com/meteor/docs/blob/version-NEXT/long-form/oplog-observe-driver.md http://info.meteor.com/blog/tuning-meteor-mongo-livedata-for-scalability