非常教程

Electron参考手册

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以获取更多信息。

ipcMain
ipcMain 详细
Electron

Electron 是一个使用 JavaScript, HTML 和 CSS 等 Web 技术创建原生程序的框架,它负责比较难搞的部分,你只需把精力放在你的应用的核心上即可。

主页 https://electron.atom.io/
源码 https://github.com/electron/electron
发布版本 1.7.9