Realm ~ Worker

Realm Worker 可用于处理多个自动托管的子进程中的同步事件。

与 Web Worker 类似,通过向 Worker 传递应在新进程中加载的模块名称来初始化 Worker。 模块应为其希望处理的每个偶数类型导出一个函数,在发出该事件时将调用该函数。

目前支持的事件:

  • 'available':每当出现具有与筛选器正则表达式匹配的虚拟路径的新 Realm 时(由于新创建 Realm 或添加侦听器),则发出。 虚拟路径(即协议和主机名之后的 URL 部分)作为参数传递。
  • 'change':每当与筛选器正则表达式匹配的 Realm 中的数据发生变化时发出。 传递的ChangeEvent参数包含有关哪个 Realm 已更改以及该 Realm 中的哪些对象已更改的信息。
  • 'delete':每当与筛选器正则表达式匹配的 Realm 已从服务器中删除时发出。 正在删除的 Realm 的虚拟路径作为参数传递。

工作线程根据需要自动生成子进程以并行处理事件(最多达到options参数中指定的限制)。 每个特定 Realm 的事件将按照事件发生的顺序进行串行处理,但可能不会全部在同一个子级中处理。

new Worker (moduleName, options )

创建一个执行给定模块的新 Worker。

参数
  • moduleName
    • 类型: string
    • 要在工作进程中加载的模块。

  • 选项 可选
    • 类型: 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'));