消息机制
一收一发
一收一发类似于前后端接口调用,我们完全可以封装一个类似 axios
或 fetch
的工具方法。
Web 端
electron?.ipcRenderer?.invoke('window-max').then((isWinSizeMax) => {
console.log(isWinSizeMax);
});
Nodejs 端
ipcMain.handle('window-max', function () {
return true;
});
只收不发
比如我们要监听下载进度:
Web 端
//监听下载版本信息
electron?.ipcRenderer?.on('window-download-msg', (event, updateDesc = []) => {
console.log('下载实时信息:', updateDesc);
});
Nodejs 端
//发送消息封装
function onSendMessage(event, messageTitle, params = [], callback = () => void 0) {
try {
if (!event) {
console.log(`消息对象未发现 ${messageTitle}`);
return;
}
if (event?.sender?.isDestroyed()) {
return;
}
//清空消息队列
clearMessageQueue(event);
event?.sender?.send(messageTitle, ...params);
callback?.();
} catch (e) {
console.log(`发送${messageTitle}消息失败`, e.toString());
}
}
// 在下载方法内开始发送
onSendMessage(mainData.win_event, 'window-download-msg', [更新信息]);
只发不收
有时候我们并不关心执行结果,或只是通知而已,那个就可以向消息管道中发送即可 无需监听其他消息。
Web 端
electron?.ipcRenderer.send('window-min');