marktext/docs/wip/ipc.md
Felix Häusler 4dada5b84d
Drop support for portable Windows binary (#1065)
* Dropped support for portable Windows binary

* Update documentation
2019-06-05 21:39:23 +02:00

1.6 KiB

Inter-Process Communication (IPC)

Electron provides ipcMain and ipcRenderer to communicate asynchronously between the main process and renderer processes. The event name/channel must be prefixed with mt:: (previously AGANI::) if used between main process and renderer processes. The default argument list will be (event, ...args). The event name/channel is not prefixed when using ipcMain to emit events to the main process directly and emitted events don't have an event parameter. The parameter list will only be (...args)! When simulate a renderer event you must specify a event parameter (null or undefined may lead to unexpected exceptions).

Examples

Listening to a renderer event in the main process:

import { ipcMain } from 'electron'

// Listen for renderer events
ipcMain.on('mt::some-event-name', (event, arg1, arg2) => {
  // ...

  // Send a direct response to the renderer process
  event.sender.send('mt::some-event-name-response', 'pong')
})

// Listen for main events
ipcMain.on('some-event-name', (arg1, arg2) => {
  // ...
})


ipcMain.emit('some-event-name', 'arg 1', 'arg 2')
// ipcMain.emit('mt::some-event-name-response', undefined, 'arg 1', 'arg 2') // crash because event is used

Listening to a main event in the renderer process:

import { ipcRenderer } from 'electron'

// Listen for main events
ipcRenderer.on('mt::some-event-name-response', (event, arg1, arg2) => {
  // ...
})

ipcRenderer.send('mt::some-event-name-response', 'arg 1', 'arg 2')