【问题标题】:is there any way to send async messages to every renderer process in electron?有没有办法向电子中的每个渲染器进程发送异步消息?
【发布时间】:2018-09-25 08:56:08
【问题描述】:

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

我有两个渲染器进程 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 窗口。我怎样才能在main_ui 上捕捉到reply

【问题讨论】:

    标签: javascript electron ipc


    【解决方案1】:

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

    是的,您可以一对一

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-24
      • 1970-01-01
      • 2016-10-25
      • 2022-01-27
      • 1970-01-01
      • 2016-07-05
      • 2019-02-07
      • 2020-07-09
      相关资源
      最近更新 更多