electron 通信总结

默认开启上下文隔离的情况下

渲染进程调用主进程方法:

主进程

  1. 在 main.js 中, 使用 ipcMain.handle,添加要处理的主进程方法
    const { ipcMain } = require("electron");

  2. 在 electron 中创建 preload.ts 文件,从 electron 中引入的 contextBridge 桥接方法

    暴露全局变量 eleapi 到渲染进程。并添加要调用的主进程方法。通过 ipcRenderer.on/invoke方法调用主进程方法。

ts 复制代码
const { contextBridge, ipcRenderer } = require("electron");

contextBridge.exposeInMainWorld("eleapi", {
  mainNotifyCallback: (cb) => {
    ipcRenderer.on("mainNotify", cb);
  },
  tcpRevDataCallback: (cb) => {
    ipcRenderer.on("tcpRevData", cb);
  },
  tcpSndData: (data) => {
    ipcRenderer.invoke("tcpSendData", data);
  },
  ipccall: async (data) => await ipcRenderer.invoke('ipccall', data),
  getDebugConfig: async () => await ipcRenderer.invoke("getDebugConfig"),
  openWindow: (url) => {
    ipcRenderer.send("openWindow", url);
  }
});
  1. 在 main.js 创建窗口的方法中,预加载 preload.ts

渲染进程:

  1. 页面通过 window.eleapi.xxx访问暴露的方法。

主进程向渲染进程发送消息

preload文件中,通过 ipcRenderer.on("mainNotify", cb);监听到消息,向 web 派送 mainNotifyCallback

相关推荐
q***44923 分钟前
如何在 Ubuntu 22.04 上安装 MySQL
linux·mysql·ubuntu
夏鹏今天学习了吗8 分钟前
【LeetCode热题100(69/100)】字符串解码
linux·算法·leetcode
清静诗意28 分钟前
Ubuntu Redis 安装与配置指南
linux·redis·ubuntu
CryptoRzz32 分钟前
印度股票数据 PHP 对接文档 覆盖 BSE(孟买证券交易所)和 NSE(印度国家证券交易所)的实时数据
android·服务器·开发语言·区块链·php
HalvmånEver1 小时前
Linux:基础开发工具(六)
linux·运维·服务器
百***48071 小时前
Linux下MySQL的简单使用
linux·mysql·adb
不会写代码的ys2 小时前
仿RabbitMQ实现消息队列(三)--muduo介绍与使用
linux·分布式·rabbitmq
不吃鱼的羊2 小时前
Autosar ECUM
linux·运维·服务器
llilian_162 小时前
晶振有什么好用的检测仪器?石英晶振测试仪 晶体测试仪
服务器·单片机·嵌入式硬件·其他
DARLING Zero two♡2 小时前
多人实时共用浏览器?Neko+cpolar 让异地协作像坐在一起办公
服务器