2016-03-15 12 views
5

Esiste l'implementazione di ipc per elettrone, si chiama ipcrenderer e ipcmain, sono destinati alla comunicazione di processo principale e non funziona per la comunicazione tra due finestre (anche passando l'istanza di emettitore).Comunicazione di applicazioni elettroniche tra due finestre

Penso che, con un esempio reale, sarà più chiaro (https://github.com/linuxenko/usprited). Creo la barra degli strumenti e la finestra principale in due finestre diverse. L'unico problema è una comunicazione tra queste due finestre, ipc non funziona, non ha ancora provato postmessage. Cosa puoi raccomandare per questo caso? Come o quale eventemitter, implementazione, utilizzare per comunicare tra finestre dell'applicazione elettronica?

risposta

1

Penso che la scelta del metodo IPC dipenda dal tipo di dati che è necessario condividere tra le finestre e dal modo in cui gestisci le finestre. Ad esempio, se gestisci Windows dal processo principale, puoi utilizzare il processo principale come hub centrale per passare i messaggi usando i moduli 'ipc' di Electron. Se le tue finestre si conoscono a vicenda, è probabilmente meglio scambiare messaggi direttamente tra di loro, senza passare attraverso il processo principale.

Se si apre una finestra dall'altra utilizzando ad esempio il window.open di Electron, è possibile utilizzare postMessage sul proxy della finestra (nella finestra secondaria, utilizzare window.opener.postMessage) per il trasferimento di messaggi.

Ovviamente, è anche possibile aprire una presa tra le due finestre o utilizzare qualsiasi altra forma di IPC, soprattutto se è necessario trasferire un sacco di dati. Per i messaggi e gli eventi semplici, invece, postMessage dovrebbe andare bene.

+0

grazie @inukshuk, qualcosa come la comunicazione hub tramite il processo principale sembra più reale, ci proverò. Per favore, puoi spiegare cosa intendi con "presa tra due finestre"? È possibile senza server? WebRTC? Se è così, per favore guidami come implementarlo, sembra una soluzione molto promettente. –

+0

Intendevo qualcosa come aprire un socket unix (se non stai supportando windows) o socket di rete ... uno dei tuoi processi dovrebbe giocare sul server. Non avevo preso in considerazione WebRTC, ma potrebbe essere un'idea interessante se si desidera trasmettere video o audio in streaming ... è davvero bello quello che si può fare con Electron. – inukshuk

+0

aaah, ora capisco, grazie) –