Electron 衬着历程之间的通讯

菜鸟的 Electron 踩坑集锦。

关于 主历程和衬着历程之间的通讯,运用 IPC 是很轻易的。然则衬着历程之间呢? 哈哈,我这个码农看来又踩到一个坑了。

计划一:

运用全局同享属性:

// 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)

但不具有事宜机制,没有本质的通讯功用。 固然说到这里就想起了 Node 中的全局对象了。

计划二

应用主历程做音讯中转: 此计划照样很好的。

// 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
  }
)

// 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:

    原文作者:LWXYFER
    原文地址: https://segmentfault.com/a/1190000009253100
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞