所以我的应用程序中有一些东西我不需要立即反应并找到有关属性的信息轮询节流阀 and 轮询间隔在文档中。所以这里基本上是我设法找到的有关这些属性的所有信息:
pollingIntervalMs 数
(仅限服务器)在服务器上观察时轮询此查询的频率。以毫秒为单位。默认为 10 秒。
pollingThrottleMs 编号
(仅限服务器)重新轮询之间允许的最短时间。增加此值将节省 CPU 和 mongo 负载,但代价是更新速度变慢
用户。不建议减少此值。以毫秒为单位。默认值
至 50 毫秒。
所以第一个问题 - 我不太清楚这些属性之间有什么区别,也许有人可以向我解释一下? ( pollingThrottleMs 是订阅更新的速率限制, pollingIntervalMs 是我们检查更新的频率,据我所知) pollingIntervalMs 默认值是 10 秒?真的吗?那为什么房子名字里有Ms呢?那是不对的。
然后我尝试在查询中设置这些属性,如下所示:
Meteor.publish("currentRoom", function (roomName) {
return Rooms.find({name: roomName}, {
pollingThrottleMs: 5000,
pollingIntervalMs: 5000
});
});
我预计一个客户端的更新和另一个客户端的反应性更新之间会有 5 秒的延迟,但它似乎根本不起作用。我什至在观察中放置了断点,它会立即收到通知。难道我做错了什么?它是如何工作的?
那 10 秒应该是 10 毫秒。
确保您仅更新 MongoDB 而不是 Minimongo - 例如,如果您通过 Meteor 方法进行更新,请确保您没有客户端存根。
-
尝试这个:
Meteor.publish("currentRoom", function (roomName) {
return Rooms.find({name: roomName}, {
disableOplog: true,
pollingThrottleMs: 10000,
pollingIntervalMs: 10000
});
});
您必须禁用 oplog tailing。如果不这样做,每次 MongoDB 日志更改时您仍然会收到通知。
我与客户端的观察员对此进行了测试,结果有效。
Cursor.observe({
changed: (newdoc, olddoc) => {
console.log('changed');
}
});
附加信息:
https://github.com/meteor/docs/blob/version-NEXT/long-form/oplog-observe-driver.md 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 http://info.meteor.com/blog/tuning-meteor-mongo-livedata-for-scalability
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)