2016-03-15 37 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,现在我明白了,谢谢) –

相关问题