ElectronでUDP通信する


ElectronでUDP通信(送受信)を実装する必要だったので実装内容のメモ。

開発環境

Windows 10
Electron 3.0.2

実装内容

  1. UDP通信には、dgramを使用。
  2. UDP通信行うには、メインプロセス側で通信を行う必要がある。(レンダープロセスから直接UDP通信はできない)
  3. レンダープロセスでUDP信号を受け渡しするには、メインプロセスとレンダープラセス間を通信するIPC通信を利用する必要がある。
  4. IPC通信とUDP通信を値の橋渡しは、メインプロセスでおこなう。

通信の流れ

Electron ( メインプロセス ← IPC通信 → レンダープロセス )
    ↑
UDP通信 
    ↓ 
外部アプリ

実装サンプル

ElectronでUDP通信を行うサンプル。
サンプルコード Github
アプリの使い方 README
windows版 / mac版

  1. 上記のアプリのpackageフォルダ内にアプリデータあるので、OSに合わせたアプリを設置。
  2. IP/Portの設定ファイルの更新
  3. アプリを立ち上げると、最初に受信ログ部分に設定ファイル内容が出力されます。
  4. あとは、IP/PORTがつながっていれば、相互にメッセージが送受信できます。

実装コード概要

メインプロセス

送信

レンダープロセスから受け取った値を、 文字列をバッファに変換して送信しています。

受信

最初にレンダープロセスからIPC通信を行い、
レンダープロセスとメインプロセスが相互に通信できるように設定する。
UDP通信で送られてきた、バッファオブジェクトを文字列に変換し、
IPC通信でそのままレンダープロセスに送る。

レンダープロセス

レンダープロセスでは、IPC通信を介してUDP通信を送受信しています。

送信メッセージ

テキストエリアに入力した文字列をICP通信でメインプロセスに送られます。

UDP受信ログ

メインプロセス側で行ったUDP通信のメッセージを
IPC通信を介して受け取りテキストエリアに出力しています。

その他

今回はUDP通信で扱う値は、文字列のみですがアプリに応じて値を変えたり、
json,osc等のフォーマットで最適化すれば扱いやすくなります。