我一直在使用Electrons同步和异步RPC通信机制,并且可以很好地在进程之间传递我的数据。但是,我现在需要不断地向渲染器进程发送事件数据(有点像聊天应用程序)并更新一些文本。
这可能在电子中吗?我猜我需要在渲染器过程中创建一些监听器。
答案 0 :(得分:0)
您可以使用ipcMain
和ipcRenderer
。
在主要过程中。
const {ipcMain} = require('electron')
ipcMain.on('asynchronous-message', (event, arg) => {
event.sender.send('asynchronous-reply', 'example message...')
})
在渲染器进程(网页)中。
const {ipcRenderer} = require('electron')
ipcRenderer.on('asynchronous-reply', (event, arg) => {
// arg contain your message (example message...)
})
ipcRenderer.send('asynchronous-message', 'example example send to main process')
你也可以传递任何物体。
答案 1 :(得分:0)
看起来确实如此。 e.g。
主要流程:
const ipc = require('electron').ipcMain
ipc.on('asynchronous-message', function (event, arg) {
event.sender.send('asynchronous-reply', 'pong')
function countdown( elementName, minutes, seconds )
{
var element, endTime, hours, mins, msLeft, time;
function twoDigits( n )
{
return (n <= 9 ? "0" + n : n);
}
function updateTimer()
{
msLeft = endTime - (+new Date);
if ( msLeft < 1000 ) {
//element.innerHTML = "countdown's over!";
event.sender.send('asynchronous-reply', 'countdown is over')
} else {
time = new Date( msLeft );
hours = time.getUTCHours();
mins = time.getUTCMinutes();
// element.innerHTML = (hours ? hours + ':' + twoDigits( mins ) : mins) + ':' + twoDigits( time.getUTCSeconds() );
event.sender.send('asynchronous-reply', (hours ? hours + ':' + twoDigits( mins ) : mins) + ':' + twoDigits( time.getUTCSeconds() ));
setTimeout( updateTimer, time.getUTCMilliseconds() + 500 );
}
}
// element = document.getElementById( elementName );
endTime = (+new Date) + 1000 * (60*minutes + seconds) + 500;
updateTimer();
}
countdown( "countdown", 1, 5 );
})
渲染器流程:
const {ipcRenderer} = require('electron')
ipcRenderer.on('asynchronous-reply', (event, arg) => {
// arg contain your message (example message...)
})
ipcRenderer.send('asynchronous-message', 'example example send to main process')