有時候我們想在渲染進程中通過一個事件去執行主進程里面的方法。或者在渲染進程中通知
主進程處理事件,主進程處理完成后廣播一個事件讓渲染進程去處理一些事情。這個時候就
用到了主進程和渲染進程之間的相互通信。
Electron 主進程,和渲染進程的通信主要用到兩個模塊:ipcMain 和 ipcRenderer
ipcMain:當在主進程中使用時,它處理從渲染器進程(網頁)發送出來的異步和同步信息,
當然也有可能從主進程向渲染進程發送消息。
ipcRenderer: 使用它提供的一些方法從渲染進程 (web 頁面) 發送同步或異步的消息到主
進程。 也可以接收主進程回復的消息。
場景 1:渲染進程給主進程發送異步消息:
//渲染進程 const { ipcRenderer } = require('electron') i pcRenderer.send('msg',{name:'張三'}); //異步
主進程:
//主進程 const { ipcMain } = require('electron'); ipcMain.on(''msg'',(event,arg) => { })
場景 2:渲染進程給主進程發送異步消息,主進程接收到異步消息以后通知渲染進程
//渲染進程 const { ipcRenderer } = require('electron') ipcRenderer.send('msg',{name:'張三'}); //異步
//主進程 const { ipcMain } = require('electron'); ipcMain.on(''msg'',(event,arg) => { event.sender.send('reply', 'pong'); })
//渲染進程 const { ipcRenderer } = require('electron') ipcRenderer.on('reply', function(event, arg) { console.log(arg); // prints "pong" } );
場景 3:渲染進程給主進程發送同步消息:
//渲染進程 const { ipcRenderer } = require('electron') const msg = ipcRenderer.sendSync('msg-a'); console.log(msg)
//主進程 ipcMain.on('msg-a',(event)=> { event.returnValue = 'hello'; })
