Skip to content
🔃 A lightweight wrapper around the electron ipc module.
JavaScript
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
README.md
client.js
index.js
package.json
server.js

README.md

electron-rpc

A lightweight wrapper around the ipc module of electron

This module is only compatible with Electron. It won't work in nodejs directly.

Please use electron-rpc@v2.0.0 if you're using electron >= v0.35.0. The ipc module api changed with that version.

Server API

const Server = require('electron-rpc/server')
const server = new Server()

server.configure(webContents)
server.send(action[, body])
server.on(action, callback)
server.destroy()

Client API

const Client = require('electron-rpc/client')
const client = new Client()

client.request(action[, body][, callback])
client.on(action, callback)
client.removeListener(action, callback)
client.destroy()

Usage

Server side
const Server = require('electron-rpc/server')
const app = new Server()
app.configure(window.webContents) // pass a BrowserWindow.webContents[1] object

app.on('some-action', (req, next) => {
  // req consists of id, action, body
  someAsyncRequest((err, data) => {
    if (err) return next(err)
    next(null, data)
  })
})

app.on('some-action-without-callback', function(req){
  console.log('foo')
})

// You can also send messages without triggering a request on the client
app.send('some-server-message', 'bar')

Here's the documentation about the BrowserWindow.webContents object.

Client side
const Client = require('electron-rpc/client')
client = new Client()

client.request('some-action', (err, body) => {
  console.log('Error from someAsyncRequest:', err)
  console.log('Body from someAsyncRequest:', body)
})

client.request('some-action-without-callback')

client.on('some-server-message', (err, body) => {
  console.log('foo:', body)
})

To close the connections, you can use server.destroy() or client.destroy().

You can’t perform that action at this time.