zoukankan      html  css  js  c++  java
  • 进程间通讯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

     
     
     
     
     
     
     
     
  • 相关阅读:
    boost::VS2017下编译和配置boost库
    cmake::编译一个工程
    cmake::helloworld
    python模块之urllib
    Python报错:UnicodeEncodeError 'gbk' codec can't encode character
    word页眉添加横线与删除横线
    练习五十九:字典排序
    练习五十八:列表的练习
    练习五十七:for循环 809??=800*?+9*?+1其中?代表的两位数,8*?的结果为两位数,9*?的结果为3位数。求?代表的两位数,及809??后的结果
    windows查看网络常用cmd命令
  • 原文地址:https://www.cnblogs.com/baixinL/p/14276580.html
Copyright © 2011-2022 走看看