问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Electron进程间通信(IPC)详解:三种主要通信方式及实现步骤

创作时间:
作者:
@小白创作中心

Electron进程间通信(IPC)详解:三种主要通信方式及实现步骤

引用
CSDN
1.
https://blog.csdn.net/sallyyellow/article/details/144139084

在Electron框架中,进程间通信(IPC)是构建功能丰富的桌面应用程序的关键。本文将深入探讨Electron中的IPC机制,主要包括三个方面:渲染进程到主进程的单向通信、渲染进程与主进程之间的双向通信,以及主进程到渲染进程的单向通信。通过ipcMain和ipcRenderer模块,Electron实现了不同进程间的消息传递,从而确保了应用程序的高效运行和功能的丰富性。

1、渲染进程→主进程(单向)

  • 概述:在渲染器进程中使用ipcRenderer.send发送消息,在主进程中使用ipcMain.on接收消息。

  • 常用于在 Web 中调用主进程的 API,例如下面这个需求:

    需求:点击按键后,在用户的 D 盘创建一个 hello.txt 的文件,文件内容来自于用户输入

  • 实现步骤

    1. index.html页面中添加相关元素
    2. render.js中添加对应脚本
    3. preload.js中使用ipcRenderer.send('信道','参数')发送信息,与主进程通信

    1. main.js主进程中接收信息,并定义函数执行操作


2、渲染进程⇌主进程(双向)

  • 概述渲染进程通过ipcRenderer.invoke发送消息 ,主进程使用ipcMain.handle接收并处理消息。备注:ipcRenderer.invoke的返回值是Promise实例。

  • 常用于从渲染器进程调用主进程方法并等待结果,例如下面这个需求:

    需求:点击按键后,从 D 盘读取 hello.txt 的文件的内容,并将结果呈现在页面上

  • 实现步骤

    1. index.html页面中添加相关元素
    2. render.js中添加对应脚本
    3. preload.js中使用ipcRenderer.invoke('信道','参数')发送信息,与主进程通信
    4. main.js主进程中接收信息,并定义函数执行操作
    5. render.js中接收从main.js->preload.js得到的结果

3、主进程→渲染进程

  • 概述主进程使用win.webContents.send发送消息,在渲染进程中使用ipcRenderer.on接收消息。

  • 常用于从主进程主动发送消息到渲染进程,例如下面这个需求:

    需求:应用加载6秒后,主动给渲染进程发送一个消息,内容是:hello

  • 实现步骤

    1. index.html页面中添加相关元素,render.js中添加对应脚本
    2. preload.js中使用ipcRenderer.send('信道','参数')接收消息,并配置回调函数
    3. main.js主进程中在合适的时候,使用win.webContents.send('信道','参数')发送消息

本文原文发布于2024年11月29日,部分内容可能随Electron框架版本更新而产生变化,请读者注意。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号