Realm~Trabalhador

Um Realm Worker pode ser usado para processar evento de sincronização em vários processos filho managed automaticamente.

Semelhante aos Operadores da Web, um Operador é inicializado passando a ele o nome de um módulo que deve ser carregado no novo processo. O módulo deve exportar uma função para cada tipo par que deseja tratar, que será chamada quando esse evento for emitido.

Evento atualmente suportados:

  • 'available': emitido sempre que há um novo Realm que tenha um caminho virtual correspondente ao regex do filtro, devido ao fato de o Realm ser recém-criado ou o ouvinte ser adicionado. O caminho virtual (ou seja, a parte da URL após o protocolo e o nome do host) é passado como argumento.
  • 'change': emitido sempre que os dados dentro de um Realm que correspondem ao regex do filtro forem alterados. Um argumento ChangeEvent é passado contendo informações sobre qual Realm foi alterado e quais objetos dentro do Realm foram alterados.
  • 'delete': emitido sempre que um Realm que corresponde ao regex do filtro for excluído do servidor. O caminho virtual do Realm que está sendo excluído é passado como argumento.

O Worker gera automaticamente processos filho conforme necessário para lidar com eventos em paralelo (até o limite especificado no parâmetro options ). Os eventos para cada Realm específico serão processados em série na ordem em que os eventos ocorreram, mas podem nem todos ser processados no mesmo filho.

novo operador ( moduleName, opções)

Crie um novo Trabalhador que executa o módulo fornecido.

Parâmetros:
  • moduleName
    • Tipo: string
    • O módulo a ser carregado no processo de trabalho.

  • opções opcional
    • Tipo: object
    • Um objeto contendo propriedades de opção para configurar o operador. As propriedades disponíveis são as seguintes:

      • maxWorkers: o número máximo de processos secundários a serem gerados. Padrão é os.cpus().length.
      • env: um objeto contendo variáveis de ambiente a serem definidas para o processo filho.
      • execArgv: argumentos de linha de comando para passar para os processos de trabalho do node .
Exemplo:
// 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'));