Electron 渲染进程之间的通信

对于 主进程和渲染进程 之间的通信,可见我上一篇总结:https://blog.csdn.net/weixin_42762089/article/details/87912222
下面总结一下渲染进程之间的通信。

方案一 使用 ipcRenderer.sendTo()

ipcRenderer.sendTo(webContentsId, channel, [, arg1][, arg2][, ...])
ipcRenderer.sendTo(windowId, 'ping', 'someThing')
//webContentsId : Number
//channel : String
//...args : any[]

https://electronjs.org/docs/api/ipc-renderer

方案二 使用全局共享属性

// In the main process.
global.sharedObject = {
  someProperty: 'default value'
}
// In page 1.
require('electron').remote.getGlobal('sharedObject').someProperty = 'new value'
// In page 2.
console.log(require('electron').remote.getGlobal('sharedObject').someProperty)

但不具备事件机制,没有实质的通信功能。

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

// In the main process.
ipcMain.on('ping-event', (event, arg) => {
  yourWindow.webContents.send('pong-event', 'something');
}

// In renderer process 1
ipcRenderer.send('ping-event', (event, arg) => {
    // do something
  }
)

// // In renderer process 2
ipcRenderer.on('pong-event', (event, arg) => {
    // do something
  }
)

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

// renderer process
// get Window by ID
remote.BrowserWindow.fromId(winId).webContents.send('ping', 'someThing');

渲染进程获取 ID 就有多种方法了:

第一种: 通过 global 设置和获取
第一种是: 主进程创建事件,发送信息

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

第三种: 写个文件什么的都可以,方法还是多种多样的。

官方API:
https://electron.atom.io/docs…

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangjun0708

你的打赏将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值