在子进程和父进程之间共享ipc对象

时间:2016-05-26 19:09:40

标签: javascript node.js electron

我有一个电子应用程序,我fork一个子进程在不干扰主要过程的情况下完成一些后台工作。

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

我想将ipcMain对象发送到子进程,以便它可以侦听应用程序消息并做出相应的响应。 这就是我所拥有的

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});

但是,当我尝试在子进程中使用它时,

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

我收到this.ipc.on不是函数的错误。

我是否认为这是不可能的,而且我只能在子进程和父进程之间发送常规对象?

1 个答案:

答案 0 :(得分:1)

传递给onlineSyncChild.send()的消息在被发送到子进程之前将被序列化为JSON字符串,因此message中的任何函数都将被省略。您可以在JSON.stringify()的文档中阅读有关序列化过程中省略的内容的更多信息。