2016-03-15 69 views
5

電子有ipc實現,它命名爲ipcrenderer和ipcmain,它們用於主進程通信,並且它不適用於兩個窗口之間的通信(即使傳遞發射器的實例)。兩個窗口之間的電子應用ipc通信

我認爲,真實的例子會更清楚(https://github.com/linuxenko/usprited)。我會讓工具欄和主窗口成爲兩個不同的窗口。唯一的問題是這兩個窗口之間的溝通,ipc不起作用,還沒有嘗試過postmessage。你可以爲這種情況推薦什麼?在電子應用程序的窗口之間如何進行通信,甚至是哪些嘗試,實施和使用?

回答

1

我認爲您選擇的IPC方法將取決於您需要在窗口之間共享的數據類型以及您管理窗口的方式。例如,如果您從主進程管理窗口,則可以使用主進程作爲中心集線器,以使用Electron的「ipc」模塊傳遞消息。如果你的窗口彼此瞭解,最好直接在它們之間交換消息,而不需要經過主進程。

例如,如果您使用Electron的window.open打開另一個窗口,則可以在窗口代理上使用postMessage(在子窗口中使用window.opener.postMessage)進行消息傳遞。

當然,您也可以在兩個窗口之間打開一個套接字或使用任何其他形式的IPC,尤其是如果您需要傳遞大量數據。對於簡單的消息和事件postMessage應該沒問題。

+0

謝謝@inukshuk,像通過主流程的中心通信看起來更真實,我會嘗試它。請你能解釋一下你的意思是「兩個窗口之間的套接字」嗎?沒有服務器可能嗎?的WebRTC?如果是這樣,請指導我如何實施它,它看起來像非常有前途的解決方案。 –

+0

我的意思是打開一個unix套接字(如果你不支持windows)或網絡套接字......你的一個進程將不得不播放服務器。我沒有考慮過WebRTC,但如果你想流式傳輸視頻或音頻,這可能是一個非常酷的想法......你可以用Electron做什麼是非常酷的。 – inukshuk

+0

aaah,現在我明白了,謝謝) –

相關問題