当服务器重新启动时,Meteor会自动刷新所有连接的客户端的所有选项卡。我需要控制该功能,以便更快地刷新并通知发生了什么。
我在livesata包中的源代码中找到了代码,但是有一些方法可以控制它而不会破坏核心包。
答案 0 :(得分:2)
在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],其中数据是其迁移 数据,任意JSON值(如果没有迁移数据,则为[true]) 这次)。如果包在准备好之前需要更多时间 迁移,它应该返回false。然后,一旦准备好迁移 再次,它应该调用重试功能。重试功能会 立即返回,但会安排重新迁移, 意味着每个包都将再次轮询其迁移 数据。如果他们这次都准备好了,那么迁移就会发生。 如果有迁移数据,则必须设置名称。