持续地将事件从主进程传递到渲染进程



我一直在使用电子同步和异步RPC通信机制,可以很好地在进程之间传递我的数据。但是,我现在需要不断地向渲染器进程发送事件数据(有点像聊天应用程序)并更新一些文本。

这在电子中可能吗?我猜我需要在渲染器进程中创建某种侦听器。

可以使用ipcMainipcRenderer

主进程

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')

你也可以传递任何对象

看起来是这样的。例如

主要过程:

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')

相关内容

  • 没有找到相关文章

最新更新