📜  电子从渲染器向主发送消息 - Javascript (1)

📅  最后修改于: 2023-12-03 14:56:25.303000             🧑  作者: Mango

电子从渲染器向主发送消息 - JavaScript

在 Electron 应用程序的开发中,可以使用 ipcMainipcRenderer 模块实现在主进程和渲染进程之间通信。通过 ipcRenderer 模块,渲染进程可以向主进程发送异步或同步消息。

发送消息

要发送消息,可以使用 ipcRenderer 对象的 send 方法。以下是一个简单的示例:

const { ipcRenderer } = require('electron');

// 向主进程发送消息
ipcRenderer.send('hello', 'Hello from renderer!');

// 监听主进程回复
ipcRenderer.on('hello-reply', (event, arg) => {
  console.log(arg);
});

上面的代码向主进程发送一条 hello 消息,并在主进程回复后打印回复内容。

接收消息

要接收来自主进程的消息,可以在渲染进程中使用 ipcRenderer 对象的 on 方法。以下是一个简单的示例:

const { ipcRenderer } = require('electron');

// 监听主进程发送的消息
ipcRenderer.on('world', (event, arg) => {
  console.log(arg);
});

// 向主进程回复消息
ipcRenderer.send('world-reply', 'World from renderer!');

上面的代码监听来自主进程的 world 消息,并在收到消息时打印消息内容。同时还回复了一条 world-reply 消息。

异步消息

要发送异步消息,需要将 send 方法的第一个参数指定为 channel,并在 on 方法中监听 channel 消息。

const { ipcRenderer } = require('electron');

// 发送异步消息到主进程,并在主进程回复后执行回调
ipcRenderer.send('async-message', 'An async message from renderer');

ipcRenderer.on('async-reply', (event, arg) => {
  console.log(arg); // Prints "An async reply from main"
});

上面的代码向主进程发送了一条 async-message 异步消息,并在主进程收到消息后执行回调函数,回调函数中打印了主进程回复的消息内容。

同步消息

发送同步消息时,将 sendSync 方法的第一个参数指定为 channel,并使用 ipcMain 模块在主进程中监听 channel 消息。

const { ipcRenderer } = require('electron');

// 同步发送消息到主进程并等待回复
const reply = ipcRenderer.sendSync('sync-message', 'A sync message from renderer');
console.log(reply); // "A sync reply from main"

上面的代码向主进程发送了一条 sync-message 同步消息,并等待主进程回复后将回复的内容打印到控制台中。注意,同步消息可能会阻塞主进程,因此在实际的应用程序中应当谨慎使用。

以上是一些基本的使用方法,更多信息和示例可以在 Electron 官方文档中获取。