我正在从主进程向渲染器进程发送一条消息。
在主要流程中,我正在这样做:
const ipcMain = require('electron').ipcMain;
ipcMain.on('asynchronous-message', function(event, arg) {
console.log('m i here');
event.sender.send('asynchronous-reply', 'pong');
});
在渲染器脚本中,我正在这样做:
const ipcRenderer = require('electron').ipcRenderer;
ipcRenderer.on('asynchronous-reply', function(event, arg) {
console.log('In renderer again');
});
但是,渲染器进程中似乎没有收到该消息。我错过了什么?
谢谢。我终于开始理解这个概念了。我所缺少的整个想法是从渲染器进程启动消息链。实际上我有两个渲染器进程: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);
});
});
html 脚本 1
const ipcRenderer = require('electron').ipcRenderer;
ipcRenderer.send('Request-from-SOR-Page', aor.nomenclature);
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);
});
我的结论是,为了在主进程和渲染器进程之间进行通信,渲染器需要启动消息传递,或者如果有从主进程启动的独立消息,则使用
webContents.send
。
如果我的假设正确,请纠正。
您实际上从未发送过任何东西。您只需在主进程和渲染进程中注册一个侦听器。
ipcRenderer.send
。BrowserWindow#webContents.send
。Electron 中的 IPC 通过注册异步触发的事件监听器来工作。与
ipcMain.on('asynchronous-message', function(event, arg) {
console.log('m i here');
event.sender.send('asynchronous-reply', 'pong');
});
您正在注册一个监听器(异步消息),在触发时执行一个函数。
ipcRenderer.on('asynchronous-reply', function(event, arg) {
console.log('In renderer again');
});
正在定义另一个侦听器,一旦触发它就会记录一条消息。要触发它,只需添加
ipcRenderer.send('Request-from-SOR-Page', aor.nomenclature);
到您的浏览器 Windows JS。
.send(target, payload)
是特定于 ipcRenderer 对象的方法,它将使用指定的有效负载触发 ipcMain 中的目标 ipc 侦听器。