在Electron中无法接收从主进程发送到渲染器进程的消息

bik*_*ash 4 electron

我正在从主要进程向渲染器进程发送消息.

在主要过程中,我正在这样做

const ipcMain = require('electron').ipcMain;

ipcMain.on('asynchronous-message', function(event, arg) {
   console.log('m i here');
   event.sender.send('asynchronous-reply', 'pong');
});
Run Code Online (Sandbox Code Playgroud)

在渲染器脚本中,我正在这样做

const ipcRenderer = require('electron').ipcRenderer;

ipcRenderer.on('asynchronous-reply', function(event, arg) {
    console.log('In renderer again');
});
Run Code Online (Sandbox Code Playgroud)

然而,似乎在渲染过程中没有收到消息.是否有任何我想念的东西..?

bik*_*ash 7

谢谢.我终于明白了这个概念.我缺少的整个想法是从渲染器进程启动消息链.实际上我有两个渲染器进程:html 1,html 2.想法是根据html 1中的内容填充html 2.

以下是对我有用的

Main.js

ipcMain.on('Request-from-SOR-Page', function(event, arg) {
    var nomenclature = arg;

    ipcMain.on('Request-frm-AOR-Page', function(event, arg) {
        event.sender.send('Response-To-AOR-Page', nomenclature);
    });
});
Run Code Online (Sandbox Code Playgroud)

html的脚本1

const ipcRenderer = require('electron').ipcRenderer;
ipcRenderer.send('Request-from-SOR-Page', aor.nomenclature);
Run Code Online (Sandbox Code Playgroud)

html脚本2

var ipcRenderer = require("electron").ipcRenderer;

ipcRenderer.send('Request-frm-AOR-Page');
ipcRenderer.on('Response-To-AOR-Page', function(event, data) {
    console.log(data);
});
Run Code Online (Sandbox Code Playgroud)

我的结论是,为了在主进程和渲染器进程之间进行通信,webContents.send如果存在从主进程发起的独立消息,则渲染器需要启动消息传递或使用.

如果我的假设是真的,请更正.


inu*_*huk 5

你从来没有真正发送过任何东西。您只是在 Main 和 Renderer 进程中注册了一个侦听器。