当前位置: 首页 > 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}`);});

相关文章:

electron 两个渲染进程之间通信

一、使用主进程作为中介 使用主进程作为中介相对较为灵活,但可能会增加主进程的负担 1. 从一个渲染进程向主进程发送消息 在发送消息的渲染进程中,可以使用 ipcRenderer 模块向主进程发送消息。例如: const { ipcRenderer } require(&qu…...

配置ROS环境

1.检测环境变量 运行printenv | grep ROS命令,有如下返回值则表示环境变量配置正确: ROS_ROOT/opt/ros/kinetic/share/ros ROS_PACKAGE_PATH/opt/ros/kinetic/share ROS_MASTER_URIhttp://localhost:11311 ROSLISP_PACKAGE_DIRECTORIES ROS_DIST…...

力扣 128. 最长连续序列

题目描述 我的思路 我的思路比较暴力,就是首先将数组从小到大进行排序,然后再依次遍历判断序列是否连续并时时更新连续序列的最长长度。比如示例1:nums [100, 4, 200, 1, 3, 2],第一步先将数组进行排序得到sort_nums [1, 2, 3,…...

Stable Diffusion AI绘画工具的安装与配置(MAC用户)

AI绘画的热潮席卷了整个创意行业,Stable Diffusion作为其中的翘楚,让艺术创作变得前所未有的简单。然而,对于使用Mac电脑用户来说,安装和配置Stable Diffusion可能显得有些棘手。别担心,这份详细的教程将手把手教你如何…...

flowable源码解读——并行多实例节点任务是否是顺序生成

最近在项目开发中需要在多实例开始监听里修改一个全局的计数变量,不太确定并行多实例任务在底层引擎是顺序生成还是并行生成的,如果是顺序生成的则不影响,如果是并行生成 则修改一个全局的计数变量就会出现数据错误问题,查阅了flo…...

【机器学习】AGI的基本概念、技术挑战和应用前景

引言 AGI是指机器能够完成人类能够完成的任何智力任务的能力 文章目录 引言一、什么是AGI1.1 AGI,Artificial General Intelligence(通用人工智能)1.2 AGI的定义和标准1.3 AGI的发展 二、AGI的技术挑战2.1 理解人类智能2.2 认知复杂性2.3 自主…...

flink 使用RocksDB作为状态后端

RocksDB flink在生产环境中常用RocksDB作为状态后端 1、subtask在taskmanager中作为一个线程运行,如果设置了RocksDB状态后端,RocksDB也会启动一个独立的线程,供subtask来使用。 2、RocksDB是一个kv数据库,因此只能存储flink的键…...

【运维高级内容--MySQL】

目录 一、mysql安装 二、MySQL主从复制 一、mysql安装 yum install cmake gcc-c openssl-devel ncurses-devel.x86_64 rpcgen.x86_64 #安装依赖性 #在root路径下下载mysql-boost-5.7.44、libtirpc-devel-1.3.3-8.el9_4.x86_64.rpm安装包 yum install libtirpc-devel…...

【仿真与实物设计】基于51单片机设计的打地鼠游戏机——程序源码原理图proteus仿真图PCB设计文档演示视频元件清单等(文末工程资料下载)

基于51单片机设计的打地鼠游戏机 演示视频: 基于51单片机设计的打地鼠游戏机 功能描述:使用 51单片机为核心制作一个打地鼠游戏机。按下启动开关,8盏LED流水点亮并闪烁2次,随即开始播放游戏音乐,直到开始选择模式。选…...

iPhone设备使用技巧:忘记密码的情况下如何解除iOS 18/17屏幕时间

我们给了儿子一部新手机。在尝试擦除旧手机上的所有内容并恢复出厂设置时,它要求提供 4 位屏幕时间密码。我已经尝试了我们会使用的所有可能性,但无法弄清楚。我们如何绕过这个问题或将手机恢复出厂设置以便我们可以出售它? Apple 社区 对于…...

内网渗透的风行者—Yasso

Yasso : Yasso,让内网渗透变得简单而高效。- 精选真开源,释放新价值。 概览 Yasso是由sairson精心打造的内网渗透辅助工具集,它为网络安全专家和渗透测试人员提供了一个功能强大的工作平台。在面对错综复杂的网络环境时&#xff…...

Android13 app后台无法启动Abort background activity starts from

总纲 android13 rom 开发总纲说明 目录 1.前言 2.log分析 3.代码查找分析 4.修改方法 5.编译测试 6彩蛋 1.前言 Android13 用户app后台无法启动,提示Abort background activity starts from 10111 2.log分析 08-07 21:37:36.703: W/ActivityTaskManager(440): Back…...

Day45 | 99.岛屿数量 深搜 广搜 100.岛屿的最大面积

语言 Java 99.岛屿数量 深搜 广搜 99. 岛屿数量 题目 题目描述 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可…...

css之grid布局(网格布局)

简述&#xff1a; 网格布局顾名思义就是将元素呈现为网状的整齐布局 简单使用&#xff1a; <div><div class"test"><div class"item">1</div><div class"item">2</div><div class"item">…...

数据可视化大屏模板-美化图表

Axure作为一款强大的原型设计软件&#xff0c;不仅擅长构建交互式界面&#xff0c;更在数据可视化方面展现出了非凡的创意与实用性。今天&#xff0c;就让我们一起探索Axure设计的几款精美数据可视化大屏模板&#xff0c;感受数据之美。 立体图表的视觉冲击力 Axure的数据可视…...

【与C++的邂逅】--- 类和对象(中)

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; 与C的邂逅 本篇博客我们将学习类和对象中&#xff0c;认识类的六个默认成员函数以及实现日期类。下图为本节思维导图。 &#x1f3e0; 类的6个默认成员函…...

[数据集][目标检测]瞳孔虹膜检测数据集VOC+YOLO格式8768张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;8768 标注数量(xml文件个数)&#xff1a;8768 标注数量(txt文件个数)&#xff1a;8768 标注…...

Day42 | 739. 每日温度 496.下一个更大元素 I 503.下一个更大元素II

语言 Java 739. 每日温度 每日温度 题目 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该…...

运维大规模K8S集群注意事项

序言 闲来无事&#xff0c;一片混沌&#xff0c;想不清思不断&#xff0c;改变好像来自于各个方面&#xff0c;有的时候是内部的冲突&#xff0c;有的时候是外部的竞争&#xff0c;然而&#xff0c;大部分情况下&#xff0c;一旦错过&#xff0c;就已经没得选了。 尴尬的处境&a…...

供应链系统源码的关键技术是什么?

供应链管理是企业运营中的重要环节&#xff0c;而高效的供应链系统能够大幅提升企业的竞争力。在数字化转型的过程中&#xff0c;越来越多的企业选择使用开源供应链系统源码来定制开发适合自身需求的解决方案。那么&#xff0c;供应链系统源码的关键技术有哪些&#xff1f;本文…...

从TransNet到TransNet V2:视频镜头边界检测的深度演进与实战解析

1. 视频镜头边界检测的痛点与需求 第一次接触视频剪辑的朋友可能会发现&#xff0c;把多段素材拼接成完整视频时&#xff0c;那些生硬的"咔哒"切换总显得不够专业。但你知道吗&#xff1f;就连识别这些剪辑点本身&#xff0c;对计算机来说都是个技术活。传统方法就像…...

【仅限SITS2026参会者解密】:基于真实金融/医疗场景的AI-DevSecOps成熟度自评表(含17项动态权重指标)

第一章&#xff1a;SITS2026演讲&#xff1a;AI原生DevSecOps实践 2026奇点智能技术大会(https://ml-summit.org) 在SITS2026主会场&#xff0c;来自CNCF安全工作组与GitHub Advanced Security联合团队的演讲首次系统性展示了AI原生DevSecOps落地范式——将大语言模型&#x…...

clickhouse可以表关联吗

ClickHouse 完全支持表关联&#xff08;JOIN&#xff09;&#xff0c;但语法和性能特性与传统数据库有所不同。ClickHouse JOIN 类型表格JOIN 类型语法说明INNER JOINSELECT ... FROM a INNER JOIN b ON a.id b.id标准内连接LEFT JOINSELECT ... FROM a LEFT JOIN b ON a.id …...

Halcon实战:用area_center算子快速搞定图像区域面积与中心点计算(附完整代码)

Halcon实战&#xff1a;用area_center算子快速搞定图像区域面积与中心点计算&#xff08;附完整代码&#xff09; 在工业质检、医疗影像或自动化测量领域&#xff0c;图像区域的面积与中心点坐标是最基础却至关重要的特征参数。想象一下这样的场景&#xff1a;生产线上需要统计…...

Python双目三维重建系统项目:双目标定、立体校正与双目测距全流程解析

python双目三维重建系统项目 双目标定&#xff0c;立体校正&#xff0c;双目测距&#xff0c;三维重建 该项目旨在带你了解三维重建流程&#xff1a;包括相机标定&#xff0c;立体匹配&#xff0c;深度计算等等 代码包含: 支持双USB连接线的双目摄像头 支持单USB连接线的双目摄…...

面向开发者的cv_resnet50_face-reconstruction快速上手指南:torch27环境+OpenCV全流程详解

面向开发者的cv_resnet50_face-reconstruction快速上手指南&#xff1a;torch27环境OpenCV全流程详解 1. 项目简介与核心价值 cv_resnet50_face-reconstruction是一个基于ResNet50架构的人脸重建项目&#xff0c;专门针对国内开发者优化。这个项目的最大特点是完全适配国内网…...

深度学习笔记---空洞卷积如何扩大感受野而不丢失分辨率

1. 从标准卷积到空洞卷积的进化之路 第一次听说空洞卷积这个概念时&#xff0c;我和大多数初学者一样满头问号&#xff1a;为什么要在卷积核里"挖洞"&#xff1f;这玩意儿到底比普通卷积强在哪&#xff1f;后来在图像分割任务中踩过几次坑才明白&#xff0c;传统卷积…...

【Skills开发实战指南】第25篇:PPT演示Skill:幻灯片自动生成与美化

在企业汇报、产品展示、学术演讲等场景中&#xff0c;PowerPoint演示文稿的制作是极其重要但耗时的工作。本文深入探讨如何通过Skills实现PPT演示文稿的自动化生成与美化&#xff0c;从基础幻灯片创建到复杂模板设计&#xff0c;从简单的文本填充到高级的图表集成&#xff0c;提…...

高精度智慧校园安防场景图像识别 校园安全预警系统 校园安防设备智能化识别 深度学习YOLO与校园数字化智能化应用第10393期

数据集 README一、数据集核心信息项目详情类别数量及中文名称9 类&#xff08;大型构件、门禁、应急门、一键报警、防撞设施、通讯工具、入侵检测、金属探测器、电视&#xff09;数据总量7000 条数据集格式YOLO 格式最重要应用价值1. 支撑校园安防场景下的目标检测算法训练&…...

ROS2新手必看:rqt图形化工具从安装到实战(附小乌龟控制技巧)

ROS2图形化利器&#xff1a;rqt工具从零精通到多海龟协同控制实战 第一次接触ROS2时&#xff0c;命令行操作总让人望而生畏。记得我刚开始调试机器人时&#xff0c;在终端里反复输入ros2 topic list和ros2 service call的场景至今难忘——直到发现了rqt这个可视化神器。作为ROS…...