进程间通讯electron

ipcMain

进程:主进程

从主进程到渲染进程的异步通信

ipcMain 是一个 EventEmitter 的实例。 当在主进程中使用时,它处理从渲染器进程(网页)发送出来的异步和同步信息。 从渲染器进程发送的消息将被发送到该模块。

ipcRenderer

进程: Renderer

从渲染器进程到主进程的异步通信

ipcRenderer 是一个 EventEmitter 的实例。 你可以使用它提供的一些方法从渲染进程 (web 页面) 发送同步或异步的消息到主进程。 也可以接收主进程回复的消息。

渲染进程间的直接通讯不被允许的,虽然ipcRenderer 是一个 EventEmitter 的实例,可以自己emit自己on

webContents

进程:主进程

webContents 是一个 EventEmitter。 负责渲染和控制网页, 是 BrowserWindow 对象的一个属性。

 

主进程与主进程

1.ipcMain.emit 和 ipcMain.on

因为ipcMain 是一个 EventEmitter 的实例,可以自己emit给自己on 

const {ipcMain} = require('electron')

//发事件
ipcMain.emit(customEventName, params)

//监听事件
ipcMain.on(customEventName,(event,params)=>{})

  

2.mainWin.webContents.emit 和 mainWin.webContents.on 

因为webContents 是一个 EventEmitter 的实例,可以自己emit给自己on

注意:  使用webContents.send在此场景下,webContents.on 监听不到,webContents.send不等同于webContents.emit

const {ipcMain, BrowserWindow} = require('electron')

app.on('ready', () => {
    const mainWin = new BrowserWindow()
  //发事件
  mainWin.webContents.emit(customEventName, params)

  //监听事件
  mainWin.webContents.on(customEventName,(event,params)=>{})
})

 

主进程与渲染进程

假设mainWin是BrowserWindow的一个实例,mainWin.send == mainWin.webContents.send

主进程-》渲染进程

const {ipcMain, BrowserWindow} = require('electron')

app.on('ready', () => {
    const mainWin = new BrowserWindow()
  //发事件
  mainWin.webContents.send(customEventName, params)  //或者mainWin.send
}) 

// 渲染进程,如render.js 
const { ipcRenderer } = require('electron') 
ipcRenderer.on(eventName, handler)

  

渲染进程-》主进程

//发
ipcRenderer.send(customEventName,params)

//监听
ipcMain.on(customEventName,(event,params)=>{})

  

渲染进程与渲染进程

渲染进程1-》渲染进程2 的实现:

  渲染进程1-》主进程-》渲染进程2

 

 

 
 
 
 
 
 
 
 
posted @ 2021-01-14 12:42  baixinL  阅读(558)  评论(0编辑  收藏  举报