ipcMain 模块是类 EventEmitter 的实例.当在主进程中使用它的时候,它控制着由渲染进程(web page)发送过来的异步或同步消息.从渲染进程发送过来的消息将触发事件.
发送消息
同样也可以从主进程向渲染进程发送消息。
发送消息,事件名为 channel.
回应同步消息, 你可以设置 event.returnValue.
回应异步消息, 你可以使用 event.sender.send(...).
一个例子,在主进程和渲染进程之间发送和处理消息:
// In main process.const ipcMain = require('electron').ipcMain; ipcMain.on('asynchronous-message', function(event, arg) { console.log(arg); // prints ping event.sender.send('asynchronous-reply', 'pong'); }); ipcMain.on('synchronous-message', function(event, arg) { console.log(arg); // prints ping event.returnValue = 'pong'; });
// In renderer process (web page).const ipcRenderer = require('electron').ipcRenderer;console.log(ipcRenderer.sendSync('synchronous-message', 'ping')); // prints pongipcRenderer.on('asynchronous-reply', function(event, arg) { console.log(arg); // prints pong}); ipcRenderer.send('asynchronous-message', 'ping');
监听消息
ipcMain 模块有如下监听事件方法:
ipcMain.on(channel, listener)
channel String
listener Function
监听 channel, 当新消息到达,将通过 listener(event, args...) 调用 listener.
ipcMain.once(channel, listener)
channel String
listener Function
为事件添加一个一次性用的listener 函数.这个 listener 只有在下次的消息到达 channel 时被请求调用,之后就被删除了.
ipcMain.removeListener(channel, listener)
channel String
listener Function
为特定的 channel 从监听队列中删除特定的 listener 监听者.
ipcMain.removeAllListeners([channel])
channel String (可选)
删除所有监听者,或特指的 channel 的所有监听者.
事件对象
传递给 callback 的 event 对象有如下方法:
event.returnValue
将此设置为在一个同步消息中返回的值.
event.sender
返回发送消息的 webContents ,你可以调用 event.sender.send 来回复异步消息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。