应用程序重启时Meteor自动刷新

时间:2013-02-24 15:23:24

标签: javascript meteor

当服务器重新启动时,Meteor会自动刷新所有连接的客户端的所有选项卡。我需要控制该功能,以便更快地刷新并通知发生了什么。

我在livesata包中的源代码中找到了代码,但是有一些方法可以控制它而不会破坏核心包。

1 个答案:

答案 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。然后,一旦准备好迁移   再次,它应该调用重试功能。重试功能会   立即返回,但会安排重新迁移,   意味着每个包都将再次轮询其迁移   数据。如果他们这次都准备好了,那么迁移就会发生。   如果有迁移数据,则必须设置名称。