Electron应用ipc通信两个windows
Electron application ipc communication between two windows
有 electron 的 ipc 实现,它名为 ipcrenderer 和 ipcmain ,它们用于主进程通信,它不适用于两个 windows(甚至传递发射器实例)之间的通信。
我想,结合实际例子会更清楚(https://github.com/linuxenko/usprited)。我会让 toolbar 和 main window 成为两个不同的 windows。唯一的问题是这两个 windows 之间的通信,ipc 不起作用,还没有尝试过 postmessage。您可以为这种情况推荐什么?如何或使用哪个事件发射器、实现在电子应用程序的 windows 之间进行通信?
我认为您对 IPC 方法的选择将取决于您需要在 windows 之间共享的数据类型以及您管理 windows 的方式。例如,如果您从 Main 进程管理 windows,则可以将 Main 进程用作中央枢纽,使用 Electron 的 'ipc' 模块来传递消息。如果你们 windows 彼此了解,最好直接在他们之间交换消息,而无需通过主进程。
例如,如果您使用 Electron 的 window.open
从另一个打开一个 window,则您可以在 window 代理上使用 postMessage
(在子 window, 使用 window.opener.postMessage
) 进行消息传递。
当然,您也可以在两者之间打开一个套接字 windows 或使用任何其他形式的 IPC,尤其是当您需要传递大量数据时。对于简单的消息和事件,postMessage
应该没问题。
有 electron 的 ipc 实现,它名为 ipcrenderer 和 ipcmain ,它们用于主进程通信,它不适用于两个 windows(甚至传递发射器实例)之间的通信。
我想,结合实际例子会更清楚(https://github.com/linuxenko/usprited)。我会让 toolbar 和 main window 成为两个不同的 windows。唯一的问题是这两个 windows 之间的通信,ipc 不起作用,还没有尝试过 postmessage。您可以为这种情况推荐什么?如何或使用哪个事件发射器、实现在电子应用程序的 windows 之间进行通信?
我认为您对 IPC 方法的选择将取决于您需要在 windows 之间共享的数据类型以及您管理 windows 的方式。例如,如果您从 Main 进程管理 windows,则可以将 Main 进程用作中央枢纽,使用 Electron 的 'ipc' 模块来传递消息。如果你们 windows 彼此了解,最好直接在他们之间交换消息,而无需通过主进程。
例如,如果您使用 Electron 的 window.open
从另一个打开一个 window,则您可以在 window 代理上使用 postMessage
(在子 window, 使用 window.opener.postMessage
) 进行消息传递。
当然,您也可以在两者之间打开一个套接字 windows 或使用任何其他形式的 IPC,尤其是当您需要传递大量数据时。对于简单的消息和事件,postMessage
应该没问题。