从主进程到渲染进程的异步通信
在主进程中处理由渲染进程发起的异步通信.
进程: 主进程
ipcMain 模块是类EventEmitter类的一个实例.
浅显的打个比方,渲染进程给主进程挂个号,这里就开始忙活起来.当然,你也可以从主进程中向渲染进程发送消息.
发送消息
如果从主进程向渲染进程发送消息,请查看 web-contents-send
发送消息,事件名为
channel.回应同步消息, 请设置
event.returnValue.回应异步消息, 请使用
event.sender.send(...).
在主进程和渲染进程之间发送和处理消息的例子:
// 主进程中
const {ipcMain} = require('electron')
ipcMain.on('asynchronous-message', (event, arg) => {
console.log(arg) // 输出 `ping`
event.sender.send('asynchronous-reply', 'pong')
})
ipcMain.on('synchronous-message', (event, arg) => {
console.log(arg) // 输出 `ping`
event.returnValue = 'pong'
})监听事件
ipcMain.on(channel, listener)
ipcMain.on(channel, listener)用途:监听
channel,并调用listener(event, args...)处理新消息
channelStringlistenerFunction
ipcMain.once(channel, listener)
ipcMain.once(channel, listener)用途:一次性监听
channel,当调用listener(event, args...)处理新消息后删除监听
channelStringlistenerFunction - 一次性的listener.
ipcMain.removeListener(channel, listener)
ipcMain.removeListener(channel, listener)用途:从指定
channel的监听数组中删除特定的listener
channelStringlistenerFunction
ipcMain.removeAllListeners([channel])
ipcMain.removeAllListeners([channel])用途:删除所有监听,或指定
channel的所有监听
channelString (可选)
事件对象
传递给 callback 的 event 对象有如下方法:
event.returnValue
event.returnValue将此设置成同步消息中返回的值.
event.sender
event.sender返回发送消息的 webContents ,你可以调用 event.sender.send 来回复异步消息,详见[webContents.send][web-contents-send].
Last updated
Was this helpful?