Skip to content

An adapter for Electron IPC to allow communication with Comlink

License

Notifications You must be signed in to change notification settings

mikehall314/electron-comlink

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Aug 27, 2020
7ef34fa · Aug 27, 2020

History

18 Commits
Aug 27, 2020
Aug 27, 2020
Aug 27, 2020
Dec 3, 2017
Aug 27, 2020
Aug 27, 2020
Aug 27, 2020
Aug 27, 2020
Aug 27, 2020
Aug 27, 2020
Aug 27, 2020

Repository files navigation

Build Status

electron-comlink

An adapter to allow Electron to use Comlink to communicate between the background and renderer processes.

Installation

npm install electron-comlink

Usage

Communicate from the background to the renderer

// In the renderer process
const Comlink = require("comlink");
const {ElectronMessageAdapter} = require("electron-comlink");
const endpoint = new ElectronMessageAdapter(window, electron.ipcRenderer);

const exposed = {
    doSomething() {
        return "Did something in the renderer";
    },
};

Comlink.expose(exposed, endpoint);
// In the background process
const Comlink = require("comlink");
const {ElectronMessageAdapter} = require("electron-comlink");

const win = new BrowserWindow({width: 800, height: 600});
const endpoint = new ElectronMessageAdapter(win, electron.ipcMain);

const link = Comlink.wrap(endpoint);
await link.doSomething(); // Returns "Did something in the renderer"

Communicate from the renderer to the background

// In the background process
const Comlink = require("comlink");
const {ElectronMessageAdapter} = require("electron-comlink");

const win = new BrowserWindow({width: 800, height: 600});
const endpoint = new ElectronMessageAdapter(win, electron.ipcMain);

const exposed = {
    doSomethingElse() {
        return "Did something in the background";
    },
};

Comlink.expose(exposed, endpoint);
// In the renderer process
const Comlink = require("comlink");
const {ElectronMessageAdapter} = require("electron-comlink");
const endpoint = new ElectronMessageAdapter(window, electron.ipcRenderer);

const link = Comlink.wrap(endpoint);
await link.doSomethingElse(); // Returns "Did something in the background"

Gotchas

  • The transferList argument to .postMessage() is not currently supported.
  • If you try to message the renderer before it has started up, then you could be awaiting forever

About

An adapter for Electron IPC to allow communication with Comlink

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published