当服务器重新启动时,Meteor 会自动刷新所有连接客户端的所有选项卡。我需要控制该功能,使其刷新速度较慢并通知正在发生的事情。
我在 livedata 包的源代码中找到了代码,但是有没有办法在不破解核心包的情况下控制它。
当服务器重新启动时,Meteor 会自动刷新所有连接客户端的所有选项卡。我需要控制该功能,使其刷新速度较慢并通知正在发生的事情。
我在 livedata 包的源代码中找到了代码,但是有没有办法在不破解核心包的情况下控制它。
packages/reload/reload.js 中有一个私有 API 来执行此操作。由于 API 是私有的,它可能会改变,但它是这样工作的:
例子:
if (Meteor.isClient) {
var firstTime = true;
function onMigrate (retry) {
if (firstTime) {
console.log("retrying migration in 3 seconds");
firstTime = false;
Meteor.setTimeout(function () {
retry();
}, 3000);
return false;
} else {
return [true];
}
}
Meteor._reload.onMigrate("someName", onMigrate);
// or Meteor._reload.onMigrate(onMigrate);
}
从评论中packages/reload/reload.js
:
支持迁移的包应该通过调用这个函数来注册自己。当需要迁移时,将使用一个参数调用回调,即“重试函数”。如果包准备好迁移,它应该返回 [true, data],其中 data 是它的迁移数据,一个任意的 JSON 值(如果这次没有迁移数据,则返回 [true])。如果包在准备好迁移之前需要更多时间,它应该返回 false。然后,一旦它准备好再次迁移,它应该调用重试函数。retry 函数将立即返回,但会安排重试迁移,这意味着将再次轮询每个包以获取其迁移数据。如果这次他们都准备好了,那么迁移就会发生。如果有迁移数据,必须设置名称。