2017-05-03 4 views
0

私は電子に新しいですし、ミニアプリケーションを作成しようとしています。電子では、この状況についてはわかりません。メインプロセスはメインプロセスが別のレンダリングプロセスからシグナルを受け取ったときにプロセスAをレンダリングするメッセージを送信する必要があります。 私は試しました:Electronでプロセス同期を実装するにはどうしたらいいですか?

ipc.on('signalA', function() { 
    ipc.sendSync('signalB'); 

});

しかしsendSyncは関数ではないことが判明しました。

答えて

1

電子では、あなたがメインプロセスの間で通信することができます(main.js)とレンダラのプロセス(ブラウザウィンドウ)

main.js:Webページ(index.htmlを)では

const {app, BrowserWindow} = require('electron'); 
const path = require('path'); 
const url = require('url'); 

let win = new BrowserWindow({width: 400, height: 275}); 

win.loadURL(url.format({ 
    pathname: path.join(__dirname, 'index.html'), 
    protocol: 'file:', 
    slashes: true 
})); 

win.webContents.on('did-finish-load',() => { 
    win.webContents.send('asynchronous-message', 'ping'); 
}); 

ipcMain.on('synchronous-reply', (event, arg) => { 
    console.log(arg) // prints "ping1" 
    event.returnValue = 'pong' 
}); 

ipcMain.on('asynchronous-message', (event, arg) => { 
    console.log(arg) // prints "ping2" 
    event.sender.send('asynchronous-reply', 'pong2'); 
}); 

<script> 
    const {ipcRenderer} = require('electron'); 
    ipcRenderer.on('asynchronous-message', (event, arg) => { 
    console.log(arg); // prints "ping" 
    const res = ipcRenderer.sendSync('synchronous-reply', 'ping1'); 
    console.log(res); // prints "pong" 
    }); 

    ipcRenderer.send('asynchronous-message', 'ping2') 
    ipcRenderer.on('asynchronous-reply', (event, arg) => { 
    console.log(arg) // prints "pong2" 
    }); 
</script> 

あなたがここにドキュメントを読むことができます:ipc-main.md

関連する問題