在Electron中的通信中,我们经常会用到ipcRender.invoke和ipvRender.send
接下来简要说明下这两个方法的区别
-  ipcMain.on(channel, listener) - 这是 Electron 的主进程(main process)监听来自渲染进程(renderer process)的消息的方式。
- 当渲染进程通过 ipcRenderer.send或ipcRenderer.sendSync发送消息时,主进程可以使用ipcMain.on来监听并处理这些消息。
- listener是一个回调函数,当收到匹配- channel的消息时,这个函数会被调用。
- 这种方式是异步的,主进程不会等待渲染进程的响应。
 
-  ipcMain.handle(channel, listener) - ipcMain.handle是 Electron 5.0.0 之后引入的新特性。
- 它允许主进程注册一个处理函数来响应来自渲染进程的同步消息请求。
- 当渲染进程使用 ipcRenderer.invoke发送一个同步消息请求时,主进程可以使用ipcMain.handle来处理这个请求,并返回一个响应。
- listener是一个处理函数,当收到匹配- channel的同步消息请求时,这个函数会被调用。
- 与 ipcMain.on不同,ipcMain.handle是同步的,主进程会等待渲染进程的响应。
 
总结:
- ipcMain.on主要用于处理渲染进程发送的异步消息。
- ipcMain.handle主要用于处理渲染进程发送的同步消息请求,并返回响应。