Realm~작업자

Realm Worker를 사용하면 managed 여러 하위 프로세스에서 동기화 이벤트를 처리할 수 있습니다.

웹 워커와 마찬가지로 워커는 새 프로세스에서 로드해야 하는 모듈의 이름을 전달하여 초기화됩니다. 모듈은 처리하려는 각 짝수 유형에 대한 함수를 내보내야 하며, 이는 해당 이벤트가 발생할 때 호출됩니다.

현재 지원되는 이벤트:

  • 'available': Realm이 새로 생성되었거나 리스너가 추가되어 필터 정규식과 일치하는 가상 경로가 있는 새 Realm이 있을 때마다 발생합니다. 가상 경로(즉, 프로토콜 및 호스트 이름 뒤의 URL 부분)는 인수로 전달됩니다.
  • 'change': 필터 정규식과 일치하는 Realm 내의 데이터가 변경될 때마다 발생합니다. Realm이 변경된 내용과 Realm 내에서 변경된 객체에 대한 정보가 포함된 ChangeEvent 인수가 전달됩니다.
  • 'delete': 필터 정규식과 일치하는 Realm이 서버에서 삭제될 때마다 발생합니다. 삭제되는 Realm의 가상 경로가 인수로 전달됩니다.

작업자는 이벤트를 병렬로 처리하는 데 필요한 만큼 하위 프로세스를 자동으로 생성합니다( options 매개변수에 지정된 한도까지). 각 특정 Realm에 대한 이벤트는 이벤트가 발생한 순서대로 순차적으로 프로세스되지만, 모두 동일한 하위 Realm에서 처리되지 않을 수 있습니다.

작업자(moduleName, options)

주어진 모듈을 실행하는 새 워커를 생성합니다.

매개변수:
  • 모듈 이름
    • 유형: 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'));