ズバリ
Renderer1
const ipcRenderer= require("electron").ipcRenderer;
ipcRenderer.send("message", body);
Renderer2
const ipcMain = require("electron").remote.ipcMain;
ipcMain.on("message", (event, body)=>{...});
レンダラプロセス => メインプロセス
メインプロセス => レンダラプロセス
これはよくやるのですが。
レンダラプロセス => レンダラプロセス
をやろうとして躓いたので備忘録。
NG集
Renderer1
const ipcRenderer= require("electron").ipcRenderer;
ipcRenderer.send("message", body);
Renderer2
const ipcRenderer= require("electron").ipcRenderer;
ipcRenderer.on("message", (event, body)=>{...});
チャネルが同じならipcRenderer
同士でもワンチャン...
しかし世の中そんなに甘くは無かった。
Renderer1
const ipcRenderer= require("electron").ipcRenderer;
ipcRenderer.send("message-to-main", body);
Main
const ipcRenderer= require("electron").ipcMain;
ipcMain.on("message-to-main", (event, body)=>{
event.sender.send("message-to-renderer2", body);
});
Renderer2
const ipcRenderer= require("electron").ipcrenderer;
ipcRenderer.on("message-to-renderer2", (event, body)=>{...});
メインプロセスをリレーさせる暴挙に出るも、折り返せず失敗。
Renderer1
const ipcRenderer= require("electron").ipcRenderer;
ipcRenderer.send("message", body);
Renderer2
const ipcRenderer= require("electron").ipcMain;
ipcMain.on("message", (event, body)=>{...});
Electron「ipcMain
?そんなモジュールねーよ」
ここでBrowserWindow
の存在を思い出して、受信側をremote
経由でipcMain
にしたら行けましたとさ。