当前位置: 首页 > news >正文

electron 两个渲染进程之间通信

一、使用主进程作为中介

使用主进程作为中介相对较为灵活,但可能会增加主进程的负担

1. 从一个渲染进程向主进程发送消息

在发送消息的渲染进程中,可以使用 ipcRenderer 模块向主进程发送消息。例如:

const { ipcRenderer } = require("electron");ipcRenderer.send("custom-event", "message from renderer 1");

2. 主进程接收并转发消息

在主进程中,可以使用 ipcMain 模块接收消息并转发给另一个渲染进程。例如:

const { ipcMain } = require("electron");ipcMain.on("custom-event", (event, message) => {// 查找目标窗口并发送消息const webContents = event.sender;const targetWindow = BrowserWindow.fromWebContents(webContents);targetWindow.webContents.send("custom-event", message);});

3. 接收消息的渲染进程接收消息:

在接收消息的渲染进程中,可以使用 ipcRenderer 模块接收主进程转发的消息。例如:

const { ipcRenderer } = require("electron");ipcRenderer.on("custom-event", (event, message) => {console.log(`Received message: ${message}`);});

二、使用 localStorage 或 sessionStorage 进行简单通信

使用存储进行通信较为简单,但只适用于简单的数据传递

1. 一个渲染进程写入数据

在一个渲染进程中,可以使用 localStorage 或 sessionStorage 来存储数据,例如:

localStorage.setItem("sharedData", "message from renderer 1");

2. 另一个渲染进程读取数据

在另一个渲染进程中,可以读取存储的数据,例如:

const data = localStorage.getItem("sharedData");console.log(`Received data: ${data}`);

三、使用 BroadcastChannel 进行通信

使用 BroadcastChannel 可以实现直接的通信,但需要注意兼容性问题。

1. 创建 BroadcastChannel

在两个渲染进程中,可以创建一个 BroadcastChannel 实例,并使用相同的频道名称。例如:

const channel = new BroadcastChannel("my-channel");

2. 发送消息

在一个渲染进程中,可以使用`postMessage`方法发送消息,例如:

channel.postMessage("message from renderer 1");

3. 接收消息

在另一个渲染进程中,可以通过监听`message`事件来接收消息,例如

channel.addEventListener("message", (event) => {console.log(`Received message: ${event.data}`);});


http://www.mrgr.cn/news/14633.html

相关文章:

  • 微服务框架一
  • GPT-4.0 新手使用教程(保姆级入门)
  • mysql数据表管理
  • 算法: 双指针
  • Web前端性能优化合集
  • 智能优化特征选择|基于鹦鹉优化(2024年新出优化算法)的特征选择(分类器选用的是KNN)研究Matlab程序 【优化算法可以替换成其他优化方法】
  • 各行各业的都有的文档推荐
  • 通过智能温控系统介绍嵌入式中PID控制、模糊控制、自适应控制的算法(代码示例)
  • 浅谈【数据结构】栈和队列之栈
  • AI大模型:开源与闭源的激烈交锋与未来展望
  • 人工智能 | AutoGPT理念与应用
  • 云计算day35
  • ceph-rgw zipper的设计理念(1)
  • Git Clone
  • PHP同城派送多区域运营配送小程序源码
  • 数据结构(邓俊辉)学习笔记】串 16——Karp-Rabin算法:串即是数
  • chrome cookie编辑
  • 鸿蒙开发入门day15-焦点事件
  • 一步迅速了解Spring框架中的几大特点
  • 一篇文章讲清楚Java中的反射