Electron进程间通信如何实现


今天小编给大家分享一下Electron进程间通信如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。使用Electron开发出来的桌面应用都是多进程的,其中包含了一个主进程(Main)和至少一个渲染进程(Renderer)。主进程控制整个应用的生命周期,通过electron中的一些模块与GUI交互,同时控制每一个渲染进程。渲染进程会在BrowserWindow对象创建出的窗口中渲染出Web页面,每个渲染页面都运行在独立的进程中。ipc模块包含ipcMain和 ipcRenderer两个模块,免费云主机域名其中ipcMain在主进程中使用,ipcRenderer在渲染进程中使用,在使用之前,要使用require引入对应的模块。ipc模块中的方法:ipcMain.on(msg, () => {}):监听渲染进程发送的msg消息,并做出响应。ipcMain.once(msg, () => {}):监听渲染进程发送的msg消息,并做出响应,但是监听到一次msg事件后自动移除这个监听器。ipcRenderer.on(msg, () => {}):监听主进程发送的msg消息,并做出响应。ipcRenderer.once(msg, () => {}):监听主进程发送的msg消息,并做出响应,但是监听到一次msg事件后自动移除这个监听器。ipcRenderer.send(msg, data):监听渲染进程向主进程发送msg异步消息,并携带参数data。ipcRenderer.sendSync(msg, data):监听渲染进程向主进程发送msg同步消息,并携带参数ipcRenderer.sentTo(webContentId, msg, data):监听渲染进程向具有webContentId的窗口发送消息ipcRenderer.sendToHost(msg, data):监听渲染进程向host页面上的 元素发送消息ipc模块还提供了删除指定监听器和删除所有监听器的方法:removeListener()、removeAllListener(),这两个方法在ipcMain和ipcRenderer这两个模块中的用法是一样的。通过上面的几个监听器我们发现,单独使用ipc模块无法实现主进程主动向渲染进程发送消息。所以我一般把BrowserWindow实例中的webContents和ipc模块结合使用一个主进程与渲染进程间通信的例子ipcRenderer发送的同步消息和异步消息在上面列举的几个方法中,其中ipcRenderer发送消息的方法分为发送同步消息的方法ipcRenderer.send和发送异步消息的方法ipcRenderer.sendSync。主程序在监听到这两种不同方法的消息时,可以通过不同的方式给渲染进程返回消息:在渲染进程中使用remote,可以调用主进程所提供的一些方法。(例如:dialog、menu等模块)渲染进程中使用remote模块返回的对象,都代表了主进程中的一个对象,一般称为远程对象。调用远程对象的方法时,实际上是在想主进程发送同步消息。比如上面的代码中,BrowserWindow实例是通过remote模块返回的,所以渲染进程中的BrowserWindow和win都是远程对象。在执行new BrowserWindow({…})这段代码的时候,并没有在渲染进程中创建BrowserWindow实例的对象,而是在主进程中创建了BrowserWindow对象,并把这个对象返回到渲染进程中。remote的方法和属性remote.require(module):返回主进程中的对象remote.getCurrentWindow():返回此网页所属的窗口remote.getGlobal(name):返回主进程中name的全局变量remote.process:返回主进程中的process对象上面提到的通信方法,经过测试发现都无法在渲染进程之间直接通信,有时候我们开发中可以使用主进程作为中转进行渲染进程间的通信:除了上面这种需要main process中转的方式之外,还有一种方式能够实现渲染进程之间的直接通信:以上就是“Electron进程间通信如何实现”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注百云主机行业资讯频道。

相关推荐: Android Studio代码无提示无颜色区分如何解决

这篇文章主要介绍“Android Studio代码无提示无颜色区分如何解决”,在日常操作中,相信很多人在Android Studio代码无提示无颜色区分如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android Stu…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 05/07 11:17
Next 05/07 11:17

相关推荐