electron-irpc

inter-process communication(IPC) and remote procedure call (RPC) combined.

Usage no npm install needed!

<script type="module">
  import electronIrpc from 'https://cdn.skypack.dev/electron-irpc';
</script>

README

electron-irpc v0.0.2

npm version   Build Status

inter-process communication(IPC) and remote procedure call (RPC) combined. Makes Electron IPC work more like callbacks.

So instead of calling the main thread, it is replying back, etc. and manually keeping track of everything. This module abstracts it away where you can call functions added to IRPC in the main thread and get a callback as if it was a local function even though it's running in the main thread.

Install

To set up geoipfind on your Node.js server use npm.

npm install electron-irpc

main.js

Initially this in the main thread. Only one allowed per app, so if you want to access it outside of main.js, set it as a global or pass it to other modules in main.

var irpc = require('electron-irpc');

var irpcMain = irpc.main();

// Then within the process, you can add in functions, variables or functions/variables in the same format as modules
// Also note function names, variable names and namespaces are automatically lowercased when added and called

irpcMain.addFunction('hello', function(parameters, cb)
{
    cb(null, {
        msg: 'Hello, World...'
    });
});

irpcMain.addVariable('version', 'V9000');

irpcMain.addModule({
    ping: function(parameters, cb)
    {
        //callback - error, result
        cb(null, '2ms');
    },
    version: '9.0'
}, 'testModule'); //testModule is the namespace

renderer.js

var irpc = require('electron-irpc');

var irpcRenderer = irpc.renderer();

irpcRenderer.call('hello', {}, function(err, result)
{
    console.log(err, result);
});

irpcRenderer.get('version', function(err, result)
{
    console.log(err, result);
});

irpcRenderer.call('testModule.ping', {}, function(err, result)
{
    console.log(err, result);
});

irpcRenderer.get('testModule.version', function(err, result)
{
    console.log(err, result);
});