2016-05-26 11 views
0

Ich habe eine Electron-Anwendung, wo ich fork ein Kind Prozess, um einige Hintergrund-Job zu tun, ohne den Hauptprozess zu stören.Share IPC-Objekt zwischen Kind und Eltern Prozesse

var onlineSyncChild = require('child_process').fork('./includes/server/onlineSync'); 

Ich möchte das ipcMain Objekt dem das Kind Prozess senden, damit es entsprechend Anwendungsnachrichten und antworten hören können. Hier ist, was ich habe

const electron = require('electron'); 
const app = electron.app; 
const ipcMain = electron.ipcMain; 

...

var onlineSyncChild = require('child_process').fork('./includes/server/onlineSync'); 
onlineSyncChild.on('message', function (m) { 
    console.log('onlineSync says: ', m); 
}); 
// send the ipcMain object into child 
onlineSyncChild.send({type: 'set', ipc: ipcMain, db: DB}); 

aber wenn ich versuche, es Prozess innerhalb Kind zu verwenden,

this.ipc.on('query-online-status', this.ipcQueryOnlineStatus); 

Ich erhalte eine Fehlermeldung, dass this.ipc.on ist keine Funktion.

Bin ich richtig anzunehmen, dass dies nicht möglich ist, und alles, was ich tun kann, senden regelmäßige Objekte nur zwischen Kind und Elternprozesse?

Antwort

0

Die Nachricht, die Sie an onlineSyncChild.send() übergeben, wird in eine JSON-Zeichenfolge serialisiert, bevor sie an den untergeordneten Prozess gesendet wird, sodass alle Funktionen in message ausgelassen werden. Sie können mehr darüber lesen, was während des Serialisierungsprozesses in der Dokumentation JSON.stringify() weggelassen wurde.