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