资讯专栏INFORMATION COLUMN

Electron 渲染进程之间的通信

trilever / 2507人阅读

摘要:对于主进程和渲染进程之间的通信,使用是很方便的。但是渲染进程之间呢哈哈,我这个码农看来又踩到一个坑了。方案一使用全局共享属性但不具备事件机制,没有实质的通信功能。方案二利用主进程做消息中转此方案还是很好的。

菜鸟的 Electron 踩坑集锦。

对于 主进程和渲染进程之间的通信,使用 IPC 是很方便的。但是渲染进程之间呢? 哈哈,我这个码农看来又踩到一个坑了。

方案一:

使用全局共享属性:

// In the main process.
global.sharedObject = {
  someProperty: "default value"
}
// In page 1.
require("electron").remote.getGlobal("sharedObject").someProperty = "new value"
// In page 2.
console.log(require("electron").remote.getGlobal("sharedObject").someProperty)

但不具备事件机制,没有实质的通信功能。 当然说到这里就想起了 Node 中的全局对象了。

https://electron.atom.io/docs...

方案二

利用主进程做消息中转: 此方案还是很好的。

// In the main process.
ipcMain.on("ping-event", (event, arg) => {
  yourWindow.webContents.send("pong-event", "something");
}

// In renderer process
// 1
ipcRenderer.send("ping-event", (event, arg) => {
    // do something
  }
)

// 2
ipcRenderer.on("pong-event", (event, arg) => {
    // do something
  }
)
方案三

利用 remote 接口直接获取渲染进程发送消息:

// renderer process
// get Window by ID
remote.BrowserWindow.fromId(winId).webContents.send("ping", "someThing");

渲染进程获取 ID 就有多种方法了:

第一种: 通过 global 设置和获取
第一种是: 主进程创建事件,发送信息

// main process
win1.webContents.send("distributeIds",{
    win2Id : win2.id
});
win2.webContents.send("distributeIds",{
    win1Id : win1.id
});

第三种: 写个文件什么的都可以,方法还是多种多样的。

参考:

https://github.com/electron/e...

https://github.com/electron/e...

https://juejin.im/entry/58869...

需要了解的 API:

https://electron.atom.io/docs...

https://electron.atom.io/docs...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/82803.html

相关文章

  • electron进程进程之间通信

    摘要:主进程在里,运行里脚本的进程被称为主进程。渲染进程由于使用来展示页面,所以的多进程结构也被充分利用。每个的页面都在运行着自己的进程,这样的进程我们称之为渲染进程。在一般浏览器中,网页通常会在沙盒环境下运行,并且不允许访问原生资源。 主进程 在 Electron 里,运行 package.json 里 main 脚本的进程被称为主进程。在主进程运行的脚本可以以创建 web 页面的形式展示...

    sihai 评论0 收藏0
  • Electron】酷家乐客户端开发实践分享 — 进程通信

    摘要:为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通信。此时,就需要与渲染进程通信了。发消息,渲染进程收消息内部使用来发消息。 作者:钟离,酷家乐PC客户端负责人原文地址:https://webfe.kujiale.com/electron-ku-jia-le-ke-hu-duan-kai-fa-shi-jian-fen-xiang-jin-cheng-tong-xin/酷家...

    winterdawn 评论0 收藏0
  • Electron】酷家乐客户端开发实践分享 — 进程通信

    摘要:为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通信。此时,就需要与渲染进程通信了。发消息,渲染进程收消息内部使用来发消息。 作者:钟离,酷家乐PC客户端负责人原文地址:https://webfe.kujiale.com/electron-ku-jia-le-ke-hu-duan-kai-fa-shi-jian-fen-xiang-jin-cheng-tong-xin/酷家...

    aervon 评论0 收藏0
  • Electron】酷家乐客户端开发实践分享 — 进程通信

    摘要:为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通信。此时,就需要与渲染进程通信了。发消息,渲染进程收消息内部使用来发消息。 作者:钟离,酷家乐PC客户端负责人原文地址:https://webfe.kujiale.com/electron-ku-jia-le-ke-hu-duan-kai-fa-shi-jian-fen-xiang-jin-cheng-tong-xin/酷家...

    Wuv1Up 评论0 收藏0
  • Electron 快速入门

    摘要:当一个实例被销毁后,相应的渲染进程也会被终止。之所以命名为,主要是为了与主进程这个概念对应。部分在事件触发后才能使用。当全部窗口关闭时退出。主进程接收到消息并处理之后,会返回处理结果。 简介 Electron 是一个可以使用 Web 技术如 JavaScript、HTML 和 CSS 来创建跨平台原生桌面应用的框架。借助 Electron,我们可以使用纯 JavaScript 来调用丰...

    Drummor 评论0 收藏0

发表评论

0条评论

trilever

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<