4

当服务器重新启动时,Meteor 会自动刷新所有连接客户端的所有选项卡。我需要控制该功能,使其刷新速度较慢并通知正在发生的事情。

我在 livedata 包的源代码中找到了代码,但是有没有办法在不破解核心包的情况下控制它。

4

1 回答 1

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],其中 data 是它的迁移数据,一个任意的 JSON 值(如果这次没有迁移数据,则返回 [true])。如果包在准备好迁移之前需要更多时间,它应该返回 false。然后,一旦它准备好再次迁移,它应该调用重试函数。retry 函数将立即返回,但会安排重试迁移,这意味着将再次轮询每个包以获取其迁移数据。如果这次他们都准备好了,那么迁移就会发生。如果有迁移数据,必须设置名称。

于 2013-03-16T00:29:48.500 回答