• ipcMain
    • 发送消息
    • 方法
      • ipcMain.on(channel, listener)
      • ipcMain.once(channel, listener)
      • ipcMain.removeListener(channel, listener)
      • ipcMain.removeAllListeners([channel])
    • 事件对象
      • event.returnValue
      • event.sender

    ipcMain

    从主进程到渲染进程的异步通信。

    线程:主线程

    ipcMain模块是EventEmitter类的一个实例。 当在主进程中使用时,它处理从渲染器进程(网页)发送出来的异步和同步信息。 从渲染器进程发送的消息将被发送到该模块。

    发送消息

    It is also possible to send messages from the main process to the renderer process, see webContents.send for more information.

    • 发送消息时,事件名称为channel
    • 回复同步信息时,需要设置event.returnValue
    • 将异步消息发送回发件人,需要使用event.sender.send(…)
      下面是在渲染和主进程之间发送和处理消息的一个例子:
    1. // 在主进程中.
    2. const { ipcMain } = require('electron')
    3. ipcMain.on('asynchronous-message', (event, arg) => {
    4. console.log(arg) // prints "ping"
    5. event.sender.send('asynchronous-reply', 'pong')
    6. })
    7. ipcMain.on('synchronous-message', (event, arg) => {
    8. console.log(arg) // prints "ping"
    9. event.returnValue = 'pong'
    10. })
    1. //在渲染器进程 (网页) 中。
    2. const { ipcRenderer } = require('electron')
    3. console.log(ipcRenderer.sendSync('synchronous-message', 'ping')) // prints "pong"
    4. ipcRenderer.on('asynchronous-reply', (event, arg) => {
    5. console.log(arg) // prints "pong"
    6. })
    7. ipcRenderer.send('asynchronous-message', 'ping')

    方法

    IpcMain模块有以下方法来侦听事件:

    ipcMain.on(channel, listener)

    • channel String
    • listener Function
      监听 channel,当接收到新的消息时 listener 会以 listener(event, args…) 的形式被调用。

    ipcMain.once(channel, listener)

    • channel String
    • listener Function
      添加一次性的 listener。当且仅当下一个消息发送到 channellistener 才会被调用,随后 <0>listener</0> 会被移除。

    ipcMain.removeListener(channel, listener)

    • channel String
    • listener Function
      从监听器数组中移除监听 channel 的指定 listener

    ipcMain.removeAllListeners([channel])

    • channel String
      删除所有监听者,或特指的 channel 的所有监听者.

    事件对象

    传递给 callback 的 event 对象有如下方法:

    event.returnValue

    将此设置为在一个同步消息中返回的值.

    event.sender

    Returns the webContents that sent the message, you can call event.sender.send to reply to the asynchronous message, see webContents.send for more information.