ipcMain API 文档

ipcMain 是 Electron 中的主进程对象,用于与渲染进程进行通信。它提供了多种方法来接收来自渲染进程的消息、处理消息并发送响应。以下是 ipcMain 的常用方法的简要总结。

常用 API

方法名称 功能描述 参数 示例
on(channel, listener) 监听来自渲染进程的异步消息 channel: 消息通道名称
listener: 回调函数 (event, ...args)
javascript ipcMain.on('some-message', (event, arg) => { console.log(arg); event.reply('some-reply', 'response data'); });
once(channel, listener) 只监听一次来自渲染进程的异步消息,消息接收后移除监听器 channel: 消息通道名称
listener: 回调函数 (event, ...args)
javascript ipcMain.once('single-message', (event, arg) => { console.log('This will only be triggered once:', arg); });
handle(channel, listener) 处理来自渲染进程的同步请求,返回 Promise 或直接返回数据 channel: 消息通道名称
listener: 回调函数 (event, ...args)
javascript ipcMain.handle('sync-message', async (event, arg) => { console.log('Sync message received:', arg); return 'synchronous reply'; });
removeListener(channel, listener) 移除特定通道的消息监听器 channel: 消息通道名称
listener: 要移除的回调函数
javascript ipcMain.removeListener('message-channel', messageListener);
removeAllListeners(channel) 移除指定通道的所有监听器 channel: 消息通道名称 javascript ipcMain.removeAllListeners('message-channel');
setMaxListeners(n) 设置通道的最大监听器数量 n: 最大监听器数量 javascript ipcMain.setMaxListeners(20);
event.reply(channel, ...args) 向渲染进程发送响应消息 channel: 响应消息的通道名称
args: 响应的参数
javascript ipcMain.on('asynchronous-message', (event, arg) => { event.reply('asynchronous-reply', 'pong'); });
event.returnValue 用于同步消息的返回值 javascript ipcMain.on('synchronous-message', (event, arg) => { event.returnValue = 'synchronous reply'; });

常用 API

1. on(channel, listener)

  • 功能:监听来自渲染进程的异步消息。
  • 参数
    • channel: 消息通道的名称。
    • listener: 监听消息的回调函数,签名为 (event, ...args)
  • 示例
    const { ipcMain } = require('electron');
    
    ipcMain.on('some-message', (event, arg) => {
      console.log(arg); // 处理接收到的消息
      event.reply('some-reply', 'response data');
    });
    

2. once(channel, listener)

  • 功能:只监听一次来自渲染进程的异步消息,消息接收后会自动移除监听器。
  • 参数
    • channel: 消息通道的名称。
    • listener: 监听消息的回调函数,签名为 (event, ...args)
  • 示例
    ipcMain.once('single-message', (event, arg) => {
      console.log('This will only be triggered once:', arg);
    });
    

3. handle(channel, listener)

  • 功能:处理来自渲染进程的同步请求,返回一个 Promise 或直接返回数据。
  • 参数
    • channel: 消息通道的名称。
    • listener: 处理消息的回调函数,签名为 (event, ...args),需要返回一个 Promise 或直接返回数据。
  • 示例
    ipcMain.handle('sync-message', async (event, arg) => {
      console.log('Sync message received:', arg);
      return 'synchronous reply';
    });
    

4. removeListener(channel, listener)

  • 功能:移除特定通道的消息监听器。
  • 参数
    • channel: 消息通道的名称。
    • listener: 要移除的回调函数。
  • 示例
    function messageListener(event, arg) {
      console.log(arg);
    }
    
    ipcMain.on('message-channel', messageListener);
    ipcMain.removeListener('message-channel', messageListener);
    

5. removeAllListeners(channel)

  • 功能:移除指定通道的所有监听器。
  • 参数
    • channel: 消息通道的名称。
  • 示例
    ipcMain.removeAllListeners('message-channel');
    

6. setMaxListeners(n)

  • 功能:设置某个通道的最大监听器数,默认值为 10,超过此数目时会发出警告。
  • 参数
    • n: 最大监听器数量。
  • 示例
    ipcMain.setMaxListeners(20);
    

7. event.reply(channel, ...args)

  • 功能:向渲染进程发送响应消息,通常在 ipcMain.on() 的回调中使用。
  • 参数
    • channel: 响应消息的通道名称。
    • args: 响应的参数,可以是任何数据。
  • 示例
    ipcMain.on('asynchronous-message', (event, arg) => {
      console.log(arg); // 打印来自渲染进程的参数
      event.reply('asynchronous-reply', 'pong');
    });
    

8. event.returnValue

  • 功能:用于同步消息的返回值。对于 ipcMain.on() 接收到的同步请求,使用 event.returnValue 来返回数据。
  • 示例
    ipcMain.on('synchronous-message', (event, arg) => {
      console.log(arg); // 打印来自渲染进程的参数
      event.returnValue = 'synchronous reply';
    });
    

小结

ipcMain 提供了多种方法用于接收来自渲染进程的消息、处理消息、发送响应、移除监听器等。它没有明确的 “静态方法”,但是提供的 API 方法都可以直接使用,无需实例化,因此可以认为它的行为是静态的。

这些方法使得主进程与渲染进程之间的通信变得更加灵活,可以根据需要实现异步和同步通信、设置最大监听器数量、以及根据特定通道名称移除监听器等功能。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐