Meteorは、サーバーの再起動時に、接続されているすべてのクライアントのすべてのタブを自動的に更新します。更新が遅くなり、何が起こっているかを通知するように、その機能を制御する必要があります。
livedataパッケージのソースでコードを見つけましたが、コアパッケージをハッキングせずにコードを制御する方法はあります。
Meteorは、サーバーの再起動時に、接続されているすべてのクライアントのすべてのタブを自動的に更新します。更新が遅くなり、何が起こっているかを通知するように、その機能を制御する必要があります。
livedataパッケージのソースでコードを見つけましたが、コアパッケージをハッキングせずにコードを制御する方法はあります。
これを行うためのプライベート API が packages/reload/reload.js にあります。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
:
移行をサポートするパッケージは、この関数を呼び出して自身を登録する必要があります。移行の時期になると、「再試行関数」という 1 つの引数でコールバックが呼び出されます。パッケージが移行の準備ができている場合は、[true, data] を返す必要があります。ここで、data は移行データであり、任意の JSON 値 (今回移行データがない場合は [true]) です。パッケージの移行準備が整うまでにさらに時間が必要な場合は、false を返す必要があります。次に、再度移行する準備ができたら、再試行関数を呼び出す必要があります。再試行機能はすぐに戻りますが、移行を再試行するようにスケジュールします。つまり、すべてのパッケージが移行データのためにもう一度ポーリングされます。今回はすべての準備ができていれば、移行が行われます。移行データがある場合は name を設定する必要があります。