electron-rabbit
Simple inter process communication to speed up your electron apps.
Why?
Read this post by @jlongster to learn why you would use this.
Setup
See example/app.js
for a working example.
In short, include background.js in a <script>
tag in your background.html
.
const serverHandlers = const rabbit = const ipcRenderer = ipcRenderer
Include client-preload.js in the preload
of your client window.
const rabbit = windowmiddlewareClient = ipcRenderer
Usage
Client -> Background -> Client
Send ipc messages from the frontend to the background window process and get a callback when complete.
example/my-app-ipc.js
var handlers = {}handlers'start-a-long-running-process' = { return { console }}moduleexports = handlers
client.js
var ipc = windowmiddlewareClient ipc
Background -> Client
Send messages asyncrously from the background window to the client.
example/my-app-ipc.js
const ipc = ipc
client.js
var ipc = window.middlewareClient
ipc.on('something-to-frontend', function (arg) {
console.log('got thing! now i'm re-rendering', arg)
})
API
client = electron-rabbit.Client()
Create a client api that can interact with the background ipc. This client can be created in the electron main or renderer processes.
Example usage
var client = clientipc ipc
Messages are kept in a queue which is drained once a connection is established.
electron-rabbit.init(socketName, handlers)
Create the background ipc handlers.
Arguments:
- socketName: string
- handlers: Object of String -> Handler. Handler should be an asyncronous function that returns a Promise.
electron-rabbit.send(name, args)
Send an event with the given name and arguments from the background to the client.
electron-rabbit.findOpenSocket(namespace)
Finds you an open socket if you're having more than one application instance or ipc instance open at the same time.
Credit
Inspired by https://github.com/jlongster/electron-with-server-example
License
MIT