diff --git a/main/event/message.js b/main/event/message.js index e55ef2a..745ba99 100644 --- a/main/event/message.js +++ b/main/event/message.js @@ -96,7 +96,41 @@ function createWindowTrans() { }); } +function getSyncMsg() { + ipcMain.on('sync-render', (event, data) => { + console.log(data); + event.sender.send('main-msg', '主进程收到了渲染进程的【异步】消息!') + }); +} + +function getAsyncMsg() { + ipcMain.on('async-render', (event, data) => { + console.log(data); + event.returnValue = '主进程收到了渲染进程的【同步】消息!'; + }); +} + +function sendMsg() { + let i = 0; + const mainWindow = BrowserWindow.fromId(global.mainId); + ipcMain.on('start-msg', (event, data) => { + console.log('开始定时向渲染进程发送消息!'); + global.sendMsg = true; + }); + + ipcMain.on('end-msg', (event, data) => { + console.log('结束向渲染进程发送消息!'); + global.sendMsg = false; + }); + + setInterval(() => { + if (global.sendMsg) { + mainWindow.webContents.send('main-msg', `ConardLi【${i++}】`) + } + }, 200); + +} export default function handleMessage() { @@ -107,4 +141,7 @@ export default function handleMessage() { createNoBarWindowWithButton(); createWindowDrag(); createWindowTrans(); + getSyncMsg(); + getAsyncMsg(); + sendMsg(); } \ No newline at end of file diff --git a/render/component/Nav/index.js b/render/component/Nav/index.js index 4b6543c..d641f18 100644 --- a/render/component/Nav/index.js +++ b/render/component/Nav/index.js @@ -43,6 +43,9 @@ class Nav extends Component { 窗口 + + 进程通信 + 弹框 diff --git a/render/routes/index.js b/render/routes/index.js index 1a698e2..49c00d0 100644 --- a/render/routes/index.js +++ b/render/routes/index.js @@ -9,6 +9,7 @@ import System from '$views/System'; import Print from '$views/Print'; import Shell from '$views/Shell'; import MenuView from '$views/MenuView'; +import IPC from '$views/IPC'; export default class RouteContent extends Component { render() { @@ -23,6 +24,7 @@ export default class RouteContent extends Component { + ); diff --git a/render/views/IPC/index.css b/render/views/IPC/index.css new file mode 100644 index 0000000..a12d9a4 --- /dev/null +++ b/render/views/IPC/index.css @@ -0,0 +1,8 @@ +.demoContainer { + width: 50%; + margin: 0 auto; +} + +.margin { + margin-top: 15px; +} \ No newline at end of file diff --git a/render/views/IPC/index.js b/render/views/IPC/index.js new file mode 100644 index 0000000..3cfce07 --- /dev/null +++ b/render/views/IPC/index.js @@ -0,0 +1,57 @@ +import React from 'react'; +import { Button, Alert } from 'antd'; +import styles from './index.css'; +import { ipcRenderer } from 'electron'; + + +class IPC extends React.Component { + + constructor(props) { + super(props); + this.state = { + msg: '' + } + } + + componentDidMount() { + ipcRenderer.on('main-msg', (event, msg) => { + this.setState({ msg }) + }) + } + + handleSendSync = () => { + ipcRenderer.send('sync-render', '我是来自渲染进程的异步消息'); + } + + handleSendAsync = () => { + const msg = ipcRenderer.sendSync('async-render', '我是来自渲染进程的同步消息'); + this.setState({ msg }) + } + + handleStart = () => { + ipcRenderer.send('start-msg'); + } + + handleEnd = () => { + ipcRenderer.send('end-msg'); + } + + + render() { + const { msg } = this.state; + return ( +
+ + + + + + + + +
+ ); + } +} + +export default IPC; \ No newline at end of file