Socket
Socket
Sign inDemoInstall

electron-better-ipc-modtype

Package Overview
Dependencies
1
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    electron-better-ipc-modtype

Simplified IPC communication for Electron apps


Version published
Maintainers
1
Install size
47.4 kB
Created

Readme

Source

electron-better-ipc Build Status

Simplified IPC communication for Electron apps

The biggest benefit of this module over the built-in IPC is that it enables you to send a message and get the response back in the same call. This would usually require multiple IPC subscriptions.

You can use this module directly in both the main and renderer process.

Install

$ npm install electron-better-ipc

Requires Electron 5 or later.

Usage

Using the built-in IPC

Here, as an example, we use the built-in IPC to get an emoji by name in the renderer process from the main process. Notice how it requires coordinating multiple IPC subscriptions.

Main
const {ipcMain: ipc} = require('electron');

ipc.on('get-emoji', async (event, emojiName) => {
	const emoji = await getEmoji(emojiName);
	event.sender.send('get-emoji-response', emoji);
});
Renderer
const {ipcRenderer: ipc} = require('electron');

ipc.on('get-emoji-response', (event, emoji) => {
	console.log(emoji);
	//=> '🦄'
});

ipc.send('get-emoji', 'unicorn');

Using this module

As you can see below, this module makes it much simpler to handle the communication. You no longer need multiple IPC subscriptions and you can just await the response in the same call.

Main
const {ipcMain: ipc} = require('electron-better-ipc');

ipc.answerRenderer('get-emoji', async emojiName => {
	const emoji = await getEmoji(emojiName);
	return emoji;
});
Renderer
const {ipcRenderer: ipc} = require('electron-better-ipc');

(async () => {
	const emoji = await ipc.callMain('get-emoji', 'unicorn');
	console.log(emoji);
	//=> '🦄'
})();

Here we do the inverse of the above, we get an emoji by name in the main process from the renderer process:

Renderer
const {ipcRenderer: ipc} = require('electron-better-ipc');

ipc.answerMain('get-emoji', async emojiName => {
	const emoji = await getEmoji(emojiName);
	return emoji;
});
Main
const electron = require('electron');
const {ipcMain: ipc} = require('electron-better-ipc');

const browserWindow = electron.BrowserWindow.getFocusedWindow();

(async () => {
	const emoji = await ipc.callRenderer(browserWindow, 'get-emoji', 'unicorn');
	console.log(emoji);
	//=> '🦄'
})();

API

The module exports ipcMain and ipcRenderer objects which enhance the built-in ipc module with some added methods, so you can use them as a replacement for electron.ipcMain/electron.ipcRenderer.

Main process

ipcMain.callRenderer(browserWindow, channel, [data])

Send a message to the given window.

In the renderer process, use ipcRenderer.answerMain to reply to this message.

Returns a Promise<unknown> with the reply from the renderer process..

browserWindow

Type: BrowserWindow

The window to send the message to.

channel

Type: string

The channel to send the message on.

data

Type: unknown

The data to send to the receiver.

ipcMain.answerRenderer(channel, callback)

This method listens for a message from ipcRenderer.callMain defined in a renderer process and replies back.

Returns a function, that when called, removes the listener.

channel

Type: string

The channel to send the message on.

callback([data], browserWindow)

Type: Function | AsyncFunction

The return value is sent back to the ipcRenderer.callMain in the renderer process.

ipcMain.sendToRenderers(channel, [data])

Send a message to all renderer processes (windows).

channel

Type: string

The channel to send the message on.

data

Type: unknown

The data to send to the receiver.

Renderer process

ipcRenderer.callMain(channel, [data])

Send a message to the main process.

In the main process, use ipcMain.answerRenderer to reply to this message.

Returns a Promise<unknown> with the reply from the main process.

channel

Type: string

The channel to send the message on.

data

Type: unknown

The data to send to the receiver.

ipcRenderer.answerMain(channel, callback)

This method listens for a message from ipcMain.callRenderer defined in the main process and replies back.

Returns a function, that when called, removes the listener.

channel

Type: string

The channel to send the message on.

callback([data])

Type: Function AsyncFunction

The return value is sent back to the ipcMain.callRenderer in the main process.

Keywords

FAQs

Last updated on 22 Aug 2019

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc