ipcMain

ipcMain

从主进程到呈现程序进程异步通信。

程序:主

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

发送消息

还可以将消息从主进程发送到呈现程序进程,请参见webContents.发送想了解更多信息。

  • 发送消息时,事件名为channel...

  • 要回复同步消息,需要设置event.returnValue...

  • 若要向发送方发送异步消息,可以使用event.sender.send(...)...

在呈现进程和主进程之间发送和处理消息的示例:

// In main process. const {ipcMain} = require('electron') ipcMain.on('asynchronous-message', (event, arg) => { console.log(arg) // prints "ping" event.sender.send('asynchronous-reply', 'pong') }) ipcMain.on('synchronous-message', (event, arg) => { console.log(arg) // prints "ping" event.returnValue = 'pong' })

// In renderer process (web page). const {ipcRenderer} = require('electron') console.log(ipcRenderer.sendSync('synchronous-message', 'ping')) // prints "pong" ipcRenderer.on('asynchronous-reply', (event, arg) => { console.log(arg) // prints "pong" }) ipcRenderer.send('asynchronous-message', 'ping')

方法

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

ipcMain.on(channel, listener)

  • channel

  • listener功能

channel,当有新邮件到达时listener将与被调用listener(event, args...)

ipcMain.once(channel, listener)

  • channel

  • listener功能

listener为事件添加一次性功能。这listener仅在下一次发送消息时被调用channel,之后将其删除。

ipcMain.removeListener(channel, listener)

  • channel

  • listener功能

从指定listener的侦听器数组中移除指定的channel

ipcMain.removeAllListeners([channel])

  • channel

删除指定的侦听器channel

事件对象

event传递给该对象的对象callback具有以下方法:

event.returnValue

将其设置为在同步消息中返回的值。

event.sender

返回webContents发送消息的消息,您可以调用event.sender.send以回复异步消息,请参阅webContents.send以获取更多信息。