发送: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