私はElectronのメインプロセスから複数のウィンドウを作成し、それらの間でメッセージを渡す必要があります。レンダラからレンダラへメッセージを送るために私が遭遇した唯一の方法は、それをメインプロセスにバウンスさせることです。レンダラーAからrenderBにメッセージを直接送信する方法はありますか?Electronの2つのレンダラープロセス間で直接通信
0
A
答えて
0
通信システムのロジックによって異なります。例えば
あなたは常にBrowserWindow4にBrowserWindow2からデータを送信する必要がある場合、あなたはBrowserWindow4とBrowserWindow2でipcRendererにipcMainを宣言することができます。あなたのメッセージ受信で
あなたはすべての人に、すべてのBrowserWindowsから送信する必要があります場合は、私が(親戚にIDを使用して)BrowserWindowsにメインプロセスとディスパッチメッセージを使用するためにあなたをアドバイス
:
ipcMain.on('asynchronous-message', (event, arg) => {
//manage data
}
そして、あなたのメッセージの送信者中:
ipcRenderer.send('asynchronous-message', message)
0
ように
または別の、メインプロセスが参加しているが、二つの窓のレンダラプロセス間で通信する簡単な方法のいくつかの種類で達成することができます。
メインプロセスでは、ウィンドウ参照をグローバルオブジェクトのプロパティとして定義します。
各レンダラープロセスで、remote.getGlobal()を使用してメッセージを送信するウィンドウの参照にアクセスし、次にsend()メソッドを使用します。
各レンダラプロセスでメッセージを受信する通常の方法は、ipcRenderer.on()を使用します。ここで
はまさにそれを行いquick example of an Electron app次のとおりです。
main.js:
const { app, BrowserWindow } = require ('electron');
global.window1 = null;
global.window2 = null;
function onAppReady()
{
window1 = new BrowserWindow ({ width: 600, height: 500 });
window1.loadURL (`file://${__dirname}/index1.html`);
window1.webContents.openDevTools();
window1.on ('closed',() => { window1 = null; });
//
window2 = new BrowserWindow ({ width: 500, height: 600 });
window2.loadURL (`file://${__dirname}/index2.html`);
window2.webContents.openDevTools();
window2.on ('closed',() => { window2 = null; });
}
app.on ('ready', onAppReady);
app.on ('window-all-closed',() => { app.quit(); });
index1.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Window 1</title>
</head>
<body>
<h1>Window 1</h1>
<button type="button" class="send-message">Send Message to Window 2</button>
<script>
const { remote, ipcRenderer } = require ('electron');
//
let button = document.querySelector ('.send-message');
button.addEventListener ('click',() =>
{
let window2 = remote.getGlobal ('window2');
if (window2) window2.webContents.send ('message', "Message from Window 1");
});
//
ipcRenderer.on ('message', (event, message) => { console.log (message); });
</script>
</body>
</html>
INDEX2。 html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Window 2</title>
</head>
<body>
<h1>Window 2</h1>
<button type="button" class="send-message">Send Message to Window 1</button>
<script>
const { remote, ipcRenderer } = require ('electron');
//
let button = document.querySelector ('.send-message');
button.addEventListener ('click',() =>
{
let window1 = remote.getGlobal ('window1');
if (window1) window1.webContents.send ('message', "Message from Window 2");
});
//
ipcRenderer.on ('message', (event, message) => { console.log (message); });
</script>
</body>
</html>
関連する問題
- 1. 直接接続された2台のPC間のUDP通信
- 2. electronレンダラープロセスでリモートモジュールを見つけよう
- 3. 直接接続されていない2つのViewController間の通信
- 4. aspectJのアスペクト間の直接通信は?
- 5. 通信間2つのスレッド
- 6. 2つのワークフロー間でのデュプレックス通信
- 7. implemet通知への直接の返信はIonic2で直接返信
- 8. Pythonの2つのプログラム間の通信
- 9. Dockerの2つのフラスコサービス間の通信
- 10. Node.jsの2つのプロジェクト間の通信
- 11. Angular2の2つのコンポーネント間の通信
- 12. 2つのサブネットマスク間の通信
- 13. 2つのプロセス間の通信方法
- 14. 2つのフレックスアプリ間の通信
- 15. 2つのスレッド間の通信
- 16. 2つのアプリケーション間の通信方法
- 17. 2つのコンポーネント間のAngular2通信
- 18. Android - 2つのデバイス間の通信
- 19. Tapestry 5 - 2つのコンポーネント間の通信
- 20. Android - 2つのアプリケーション間の通信?
- 21. 2つのノード間の通信
- 22. 2つのウィンドウ間の通信Qt5
- 23. 2つのサブドメイン間の通信。 Zend Framework
- 24. 2つのC#アプリケーション間の通信
- 25. 2つのMS Accessアプリケーション間の通信?
- 26. 2つのiOSデバイス間の通信
- 27. 2つのプロセス間のFIFO通信c
- 28. 2つのRESTサービス間の通信
- 29. 2つのDockerコンテナ間の通信
- 30. 2つのアクティビティ間の通信?
私はElectronのIPC機能についてはわかりません。 –