@ironiumstudios/rpc-electron
v3.0.1
Published
Type-safe inter-process communication for Electron
Downloads
45
Maintainers
Readme
@ironiumstudios/rpc-electron
Type-safe communication between Electron processes. No more remembering IPC channel names, parameters order and their types.
NOTE:
this project is licensed under the company wexond, i am only forking this project to modernize it and i wish for no trouble from the wexond devs or redbrick
Installation
$ npm install --save @ironiumstudios/rpc-electron @ironiumstudios/rpc-core
Quick start
Here's an example of communication from the renderer process to the main process:
- Create a file that is imported in both main and renderer processes, for example
ping-pong.ts
:
import { RendererToMainChannel } from '@ironiumstudios/rpc-electron';
export interface PingPongService {
ping(): string;
}
export const pingPongChannel = new RendererToMainChannel<PingPongService>(
'ping-pong',
);
- Code for the renderer process:
import { ipcRenderer } from 'electron';
import { pingPongChannel } from './ping-pong';
const pingPongService = pingPongChannel.getInvoker();
(async () => {
// Equivalent of |ipcRenderer.invoke|
console.log(await pingPongService.ping()); // Prints `pong`.
})();
- Code for the main process:
import { RpcMainHandler } from '@ironiumstudios/rpc-electron';
import { PingPongService, pingPongChannel } from './ping-pong';
// Equivalent of |ipcMain.handle|
class PingPongHandler implements RpcMainHandler<PingPongService> {
ping(): string {
return 'pong';
}
}
pingPongChannel.getReceiver().handler = new PingPongHandler();
More examples
Documentation
WIP