发送:webContents.send(channel[, arg1][, arg2][, ...])
channel Stringarg (可选)通过 channel 发送异步消息给渲染进程,你也可发送任意的参数.参数应该在 JSON 内部序列化,并且此后没有函数或原形链被包括了.
渲染进程可以通过使用 ipcRenderer 监听 channel 来处理消.
接收:ipcMain.on(channel, listener)
channel Stringlistener Function监听 channel, 当新消息到达,将通过 listener(event, args...) 调用 listener.
发送: ipcRenderer.send(channel[, arg1][, arg2][, ...]) 或 ipcRenderer.sendSync(channel[, arg1][, arg2][, ...])
channel Stringarg (可选)通过 channel 向主进程发送异步(同步)消息,也可以发送任意参数.参数会被JSON序列化,之后就不会包含函数或原型链.
主进程通过使用 ipcMain 模块来监听 channel,从而处理消息,同步消息通过 event.returnValue 来响应.
注意: 发送同步消息将会阻塞整个渲染进程,除非你知道你在做什么,否则就永远不要用它 .
接收:ipcRenderer.on(channel, listener)
channel Stringlistener Function监听 channel, 当有新消息到达,使用 listener(event, args...) 调用 listener .
该方案还是基于ipc通信的,将数据存放到磁盘再通过ipc通知监听方去取,所以速度取决于IO读取的速度
测试没有覆盖多种设备和平台
测试以String为传输类型
| 数据大小 | ipc | 借助外部存储通信 |
|---|---|---|
| 100KB | <0ms | 7ms |
| 1MB | 3ms | 24ms |
| 10MB | 36ms | 146ms |
| 50MB | 152ms | 883ms |
| 100MB | 326ms | 2018ms |
数据量较小时建议使用ipc直接通讯,反应速度快。数据量大的时候可以使用外部存储,可以降低内存占用,释放暂时不用的内存,按需读取。
原文:https://www.cnblogs.com/suyuanli/p/14928269.html