ipcRenderer

    Process: Renderer

    The ipcRenderer module is an . It provides a few methods so you can send synchronous and asynchronous messages from the render process (web page) to the main process. You can also receive replies from the main process.

    See ipcMain for code examples.

    The ipcRenderer module has the following method to listen for events and send messages:

    • channel string
    • listener Function
      • event IpcRendererEvent

    Listens to channel, when a new message arrives listener would be called with listener(event, args...).

    ipcRenderer.once(channel, listener)

    • channel string
    • listener Function
      • event IpcRendererEvent
      • ...args any[]

    Adds a one time listener function for the event. This listener is invoked only the next time a message is sent to channel, after which it is removed.

    ipcRenderer.removeListener(channel, listener)

    • channel string
    • listener Function
      • ...args any[]

    Removes the specified listener from the listener array for the specified channel.

    • channel string

    Removes all listeners, or those of the specified channel.

    • channel string
    • ...args any[]

    Send an asynchronous message to the main process via channel, along with arguments. Arguments will be serialized with the Structured Clone Algorithm, just like , so prototype chains will not be included. Sending Functions, Promises, Symbols, WeakMaps, or WeakSets will throw an exception.

    If you need to transfer a MessagePort to the main process, use .

    If you want to receive a single response from the main process, like the result of a method call, consider using ipcRenderer.invoke.

    ipcRenderer.invoke(channel, ...args)

    • channel string
    • ...args any[]

    Returns Promise<any> - Resolves with the response from the main process.

    Send a message to the main process via channel and expect a result asynchronously. Arguments will be serialized with the Structured Clone Algorithm, just like , so prototype chains will not be included. Sending Functions, Promises, Symbols, WeakMaps, or WeakSets will throw an exception.

    The main process should listen for channel with ipcMain.handle().

    For example:

    If you need to transfer a to the main process, use ipcRenderer.postMessage.

    If you do not need a response to the message, consider using .

    • channel string
    • ...args any[]

    Returns any - The value sent back by the ipcMain handler.

    The main process handles it by listening for with module, and replies by setting event.returnValue.

    ipcRenderer.postMessage(channel, message, [transfer])

    • channel string
    • transfer MessagePort[] (optional)

    Send a message to the main process, optionally transferring ownership of zero or more objects.

    The transferred MessagePort objects will be available in the main process as MessagePortMain objects by accessing the ports property of the emitted event.

    For example:

    1. // Renderer process
    2. const { port1, port2 } = new MessageChannel()
    3. ipcRenderer.postMessage('port', { message: 'hello' }, [port1])
    4. // Main process
    5. ipcMain.on('port', (e, msg) => {
    6. const [port] = e.ports
    7. // ...
    8. })

    For more information on using MessagePort and MessageChannel, see the .

    ipcRenderer.sendTo(webContentsId, channel, ...args)

    • webContentsId number
    • channel string
    • ...args any[]

    Sends a message to a window with webContentsId via channel.

    • channel string
    • ...args any[]

    Like ipcRenderer.send but the event will be sent to the <webview> element in the host page instead of the main process.

    Event object

    The documentation for the event object passed to the callback can be found in the ipc-renderer-event structure docs.