Electron 渲染进程之间互相通信 创建窗口时触发

总结一下渲染进程和渲染进程之间的通信方法:

方案一 使用全局共享属性(常用)

// 主进程中在global上自定义对象
global.saveDefault= {
  token: 'default value',
  name: 'default value',
  password: 'default value',
}

// 在登录页 In page 1
require('electron').remote.getGlobal('saveDefault').token= 'token'
require('electron').remote.getGlobal('saveDefault').name= 'name'


// 在主页 In page 2 就可以获取到
console.log(require('electron').remote.getGlobal('saveDefault').name)
console.log(require('electron').remote.getGlobal('saveDefault').token)
console.log(require('electron').remote.getGlobal('saveDefault').password)

方案二 利用主进程做消息中转

// 在主进程中
ipcMain.on('ping-event', (event, arg) => {
  yourWindow.webContents.send('pong-event', 'something');
}

// 渲染进程1
ipcRenderer.send('ping-event', (event, arg) => {
     // do something
  }
)

// 渲染进程2
ipcRenderer.on('pong-event', (event, arg) => {
     // do something
  }
)

方案三 使用 ipcRenderer.sendTo()

ipcRenderer | Electron

//webContentsId : Number 
//channel : String 描述信息
//...args : any[]  参数

ipcRenderer.sendTo(webContentsId, channel, [, arg1][, arg2][, ...])
ipcRenderer.sendTo(windowId, 'ping', 'someThing')

方案四 利用 remote 接口直接获取渲染进程发送消息

// 渲染进程
// 获取窗口的id
remote.BrowserWindow.fromId(winId).webContents.send('ping', 'someThing');

获取进程id的方法

第一种: 通过 global 设置和获取

第一种是: 主进程创建事件,发送信息

// 主进程中
win1.webContents.send('distributeIds',{
    win2Id : win2.id
});

win2.webContents.send('distributeIds',{
    win1Id : win1.id
});


 

 交流


1、QQ群:可添加qq群共同进阶学习: 进军全栈工程师疑难解  群:  856402057

2、公众号:公众号「进军全栈攻城狮」 ,对前端技术保持学习爱好者。我会经常分享自己所学所看的干货,在进阶的路上,共勉!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值