有没有办法将异步消息发送到电子中的每个渲染器进程?

时间:2018-04-15 15:05:34

标签: javascript electron ipc

我正在尝试构建一个简单的天气应用程序。

我有两个渲染器进程1. main_ui窗口2. settings窗口。

settings窗口创建

main_ui窗口。 现在我想从settings窗口中选择城市名称,以便可以在main_ui窗口上显示城市的天气信息。我怎样才能实现它?

  

settings.js

var submit = document.getElementById("submit");
var city_id = document.getElementById("city_code");
var city_name = document.getElementById("city_name");
submit.addEventListener('click', () => { 
ipcRenderer.send('set_city_name', 
document.getElementById('city_name').value);
console.log(document.getElementById('city_name').value);})
  

main.js

ipcMain.on('set_city_name', (event, arg) => {
console.log("got it");
console.log(arg);
event.sender.send('reply', arg);
});

但我知道event.sender.send()会回复settings窗口。如何在reply上抓住main_ui

1 个答案:

答案 0 :(得分:0)

  

有没有办法向电子中的每个渲染器进程发送异步消息?

是的,你可以一个接一个

const {webContents} = require('electron')
webContents.getAllWebContents().forEach(wc => {
  wc.send('reply', arg)
})

对于您的实际问题,您可以更好地设计流程以避免此类情况:

  • 如果两个进程有很多共同点,那么它们可以是一个进程,但是具有不同视图的复杂html
  • 如果这些流程如此重要,您的主要流程可以直接调用