Realmワーカー

Realm ワーカーは、自動管理される複数の子プロセスの 同期 イベントを処理するために使用できます。

Web ワーカーと同様に、ワーカーは新しいプロセスでロードする必要があるモジュールの名前を渡すことによって初期化されます。 モジュールは、処理する偶数型ごとに関数をエクスポートする必要があります。この関数は、そのイベントが発生したときに呼び出されます。

現在サポートされているイベント:

  • 'available': Realm が新しく作成されるか、リスナーが追加されると、フィルター正規表現に一致する仮想パスを持つ新しい Realm が存在するたびに発生します。 仮想パス(プロトコルとホスト名の後の URL の部分)は引数として渡されます。
  • 'change': フィルター正規表現に一致する Realm 内のデータが変更されたたびに発生します。 どの Realm が変更されたか、Realm 内のどのオブジェクトが変更されたかという情報を含むChangeEvent引数が渡されます。
  • 'delete': フィルター正規表現に一致する Realm がサーバーから削除されるたびに発生します。 削除される Realm の仮想パスは引数として渡されます。

ワーカーは、イベントを並列に処理するために必要に応じて子プロセスを自動的に生成します( optionsパラメーターに指定された制限まで)。 特定の各 Realm のイベントは、イベントが発生した順序で順番に処理されますが、すべてが同じ子で処理されるとは限りません。

new Worker (moduleName、オプション

指定されたモジュールを実行する新しいワーカーを作成します。

パラメーター:
  • scheduleName
    • タイプ: string
    • ワーカー プロセスにロードするモジュール。

  • options 任意
    • タイプ: object
    • ワーカーを構成するためのオプション プロパティを含むオブジェクト。 使用可能なプロパティは次のとおりです。

      • maxWorkers: 生成する子プロセスの最大数。 デフォルトはos.cpus().lengthです。
      • env: 子プロセスに設定する環境変数を含むオブジェクト。
      • execArgv: nodeワーカー プロセスに渡すコマンドライン引数。
:
// my-worker.js
function onavailable(path) {
   console.log(`Realm available at ${path}`);
}

function onchange(change) {
   console.log(`Realm at ${change.path} changed`);
}

function ondelete(path) {
   console.log(`Realm at ${path} deleted`);
}

module.exports = {onchange, oncavailable, ondelete};

// server script
Realm.App.Sync.addListener(realmServerURL, adminUser, '.*', new Realm.Worker('my-worker'));