Electronの基本構成とプロセス間通信


定期的にAPIから取得したデータをチャート化してみたくなった。

node.jsだけでもいいけれど、electronで使いやすくしたい。

パッケージマネージャーはyarnを使いますがサンプル通りnpmでも問題ないです。

Electron 6.0.7

Electronとは

https://electronjs.org/

以前に若干触れましたがデスクトップアプリを作れるフレームワークです。

アプリ内でサーバ側処理とフロント側処理を書けます。

インストールと初期設定

まずはelectron本体とパッケージャーをインストール

package.jsonを適当に編集。

 

srcフォルダを作ってその中にファイルを作っていきます。

index.htmlmain.jspreload.js公式のクイックスタートからとってきます。

この中にもelectron実行用のpackage.jsonを作ります。

ここまででファイル構成はこんな感じ。

現時点でrenderer.jsはないですが特に問題ないです。

yarn startで起動、yarn build:winでアプリビルドが出来ればOK。

メインプロセスとレンダラプロセスのやり取り

ipcMainipcRendererを使ってプロセス間の送受信をします。

ちなみに何も考えずにやるなら公式APIサンプル通りやるのが簡単。

 

まずメインプロセス(main.js)を変更していきます。

nodeIntegrationはレンダラプロセスでrequire()を使うためにtrueに(参考)。

が、セキュリティ的によくないというのも見かけてfalseに。

 

次にcontextIsolation:falseにすることでwindowオブジェクトを共通化してpreload.jsで設定する方法もしてみました。

しかしこれもXSSの危険があるとかでtrueにしました。

 

最終的にこんな感じに。

本当にこれでいいんだろうか。

 

以下のログが出ていれば成功です。

 

ただこの例だと肝心のメッセージが送れていないので、postMessageで送るのはJSONにしたりする必要がありそうです。

また上の例から漏れましたがメイン→プロセスの送信はBrowserWindowから。

 

全体的なイメージはこんな感じ。

そもそも個人で使うならこんなセキュリティ気にする必要は全くないのですが、まぁそこは勉強をかねて。


コメントを残す

メールアドレスが公開されることはありません。