0.1.0 • Published 7 years ago
electron-process-comms v0.1.0
electron-process-comms
an ipc based electron process communication interface
installation
$ npm i electron-process-comms
Docs
import
import ProcessComms from 'electron-process-comms';
or
const ProcessComms = require('electron-process-comms');
Defining Actions
You can duplicate this in both the main and renderer processes
let processComms = new ProcessComms({
actions: {
init: () => {
console.log('hello')
},
init2: ({ dispatch }) => {
dispatch('init')
},
init3: ({ dispatch, dispatchExternal }, payload) => {
console.log(payload)
return 'init3'
}
}
})
or, register actions as needed like this:
let processComms = new ProcessComms();
processComms.registerAction('ACTION_NAME', ({ dispatch, dispatchExternal }, payload) => {
...
});
Dispatching Actions in the Local Process (Main/Renderer)
local dispatch
processComms.dispatch('init')
Dispatching Actions in the External Process (Main)
processComms.dispatchExternal(targetBrowserWindow, 'init')
Dispatching Actions in the External Process (Renderer)
processComms.dispatchExternal('init')
Dispatching with Payloads
processComms.dispatch('init', PAYLOAD)
Accessing Returned Data
Each dispatch returns an instance of a promise.
processComms.dispatch('init').then((data) => {
console.log(data) // returned from `init`
})
This also works for external dispatchers
processComms.dispatchExternal('init').then((data) => {
console.log(data) // returned from `init`
})
Example
import ProcessComms from 'electron-process-comms';
const processComms = new ProcessComms({
actions: {
action1: () => {
return 'action1';
},
action2: ({ dispatch }, payload) => {
console.log(payload);
return 'action2';
}
}
});
processComms.dispatch('action1');
processComms.dispatch('action2').then((data) => {
console.log(data);
});