zoukankan      html  css  js  c++  java
  • 如何实现electron多页面间通信

    如何实现electron多页面间通信

    1,业务需求:

    总共有两个页面,页面A显示数据,页面B处理数据,主线程Main

    2,实现的技术方案:

    在主线程中打开页面A和B,B页面不进行显示,主要负责处理从A页面发送到主线程Main上的数据,然后B将数据处理完成之后,再次将数据送到主线程Main上,主线程Main将数据再将数据转发到页面A上,页面A进行数据展示。

    注意:在electron中页面A和页面B无法进行通信。必须依托于上述解决方案。

    3,多页面消息传递流转图

    4,伪代码实现

    主线程

    const {ipcMain} = require('electron')
    ipcMain.on('send-message-A', (event, arg) => {
        ipcMain.on('send-message-B',(eventB,argB)=>{
            eventB.sender.send('send-message-B-reply', arg)
            ipcMain.on("send-message-B-dealData",(ev,ar)=>{
                event.sender.send('send-message-A-dealData', ar)
            })
        })
    });

    页面A

    const {ipcRenderer} = require('electron')
    
    ipcRenderer.send('send-message-A', 'someData')
    ipcRenderer.on('send-message-A-dealData', (event, arg) => {
        //get arg and do something
        console.log(arg)
    });

    页面B

    const {ipcRenderer} = require('electron')
    
    ipcRenderer.send('send-message-B', 'someData');
    ipcRenderer.on('send-message-B-reply', (event, arg) => {
        //get arg and do something
        //dealData
        ipcRenderer.send('send-message-B-dealData', arg);
        // event.sender.send('send-message-B-dealData', arg);//或者使用此方法
    });

     

  • 相关阅读:
    WHYZOJ-#53 线段树区间修改(线段树)
    洛谷-3373 【模板】线段树 2 (线段树)
    暑假训练-藏妹子之处(递推)
    POJ-1258 Agri-Net(kruskal最小生成树)
    POJ-2559 Largest Rectangle in a Histogram(单调栈)
    BZOJ3439 Kpm的MC密码
    BZOJ3438 小M的作物
    BZOJ3436 小K的农场
    BZOJ3437 小P的牧场
    BZOJ1430 小猴打架
  • 原文地址:https://www.cnblogs.com/DonaHero/p/9969026.html
Copyright © 2011-2022 走看看