IPC-Kommunikation zwischen Prozessen
Verwenden Sie ipcMain und ipcRenderer, um Nachrichten sicher zwischen dem Main-Prozess und dem React-Renderer auszutauschen.
IPC-Kommunikation zwischen Prozessen ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.
ipcMain.handle: Anfrage-Antwort-Muster
ipcMain.handle registriert im Hauptprozess einen benannten Kanal, der auf Anfragen des Renderers antwortet. Es akzeptiert eine asynchrone Handler-Funktion, und ihr Rückgabewert wird zum aufgelösten Wert des Promise im Renderer. Dadurch eignet es sich ideal für Vorgänge wie das Lesen von Dateien oder das Abfragen einer Datenbank.
ipcRenderer.invoke: Den Hauptprozess aufrufen
ipcRenderer.invoke sendet eine Nachricht über einen benannten Kanal und gibt ein Promise zurück, das mit dem Rückgabewert des Handlers im Hauptprozess aufgelöst wird. Dadurch entsteht ein übersichtliches asynchrones Anfrage-Antwort-Muster, das sowohl im Preload-Skript als auch in React-Komponenten natürlich mit async/await funktioniert.
invoke über contextBridge freigeben
Das Preload-Skript kapselt Aufrufe von ipcRenderer.invoke und gibt sie über contextBridge frei. Beispiel: api.readFile = (filePath) => ipcRenderer.invoke('read-file', filePath). Der Renderer ruft window.api.readFile(path) auf und erhält ein Promise zurück – übersichtlich und in einer Sandbox.
Warum der Renderer ipcRenderer niemals importiert
Bei aktiviertem contextIsolation kann der Renderer-Prozess nicht require('electron') verwenden oder ipcRenderer direkt importieren – das Modul ist schlicht nicht verfügbar. Die gesamte IPC-Kommunikation muss über die contextBridge-Freigabe des Preload-Skripts erfolgen. Dies ist beabsichtigt: Dadurch werden XSS-Angriffe daran gehindert, auf IPC zuzugreifen.
ipcMain.on: Fire-and-Forget-Nachrichten
ipcMain.on wartet auf Einweg-Nachrichten, die mit ipcRenderer.send (nicht invoke) gesendet werden. Es gibt keinen automatischen Antwortkanal – dieses Muster eignet sich für Benachrichtigungen oder Befehle, bei denen der Renderer keine Antwort benötigt, etwa zum Protokollieren von Ereignissen oder zum Auslösen einer nativen Benachrichtigung.
Daten vom Hauptprozess an den Renderer senden
Der Hauptprozess kann Daten mithilfe von webContents.send('channel-name', data) an den Renderer senden. Dies ist die wichtigste Möglichkeit, wie der Hauptprozess eine Kommunikation initiiert – beispielsweise, um Dateisystem-Überwachungsereignisse oder Aktionen aus nativen Menüs an die React-Oberfläche weiterzuleiten.
ipcRenderer.on: Im Preload-Skript lauschen
Im Preload-Skript registriert ipcRenderer.on('update', callback) einen Listener für Push-Nachrichten vom Hauptprozess. Der Callback empfängt das Ereignis und alle vom Hauptprozess gesendeten Daten, die Sie anschließend über die von contextBridge bereitgestellte Funktion an den Renderer weiterleiten.
Ereignis-Listener über contextBridge bereitstellen
Ein sauberes Muster für Push-Ereignisse sieht so aus: api.onUpdate = (callback) => ipcRenderer.on('update', (_event, data) => callback(data)). React-Komponenten abonnieren die Ereignisse mit window.api.onUpdate(setData), und der Callback aktualisiert den Zustand, sobald der Hauptprozess neue Daten sendet.
Aufräumen: Ereignis-Listener entfernen
Jeder ipcRenderer.on-Listener muss entfernt werden, sobald er nicht mehr benötigt wird, um Speicherlecks und doppelte Callbacks zu verhindern. Die Preload-Funktion sollte eine Bereinigungsfunktion zurückgeben, etwa () => ipcRenderer.removeListener('update', callback), die React aus dem Cleanup-Return von useEffect aufruft.
Sicherheit: IPC-Eingaben validieren
IPC-Eingaben aus dem Renderer sollten im Handler des Hauptprozesses als nicht vertrauenswürdige Daten behandelt werden. Validieren Sie Dateipfade immer, um Path-Traversal-Angriffe zu verhindern, bereinigen Sie Query-Parameter und prüfen Sie, ob der Ursprung des Absenders erwartet wird. Stellen Sie niemals einen generischen eval- oder exec-IPC-Kanal bereit.
IPC-Kanäle strukturieren
Wenn Ihre Anwendung wächst, sollten Sie IPC-Kanäle mithilfe von Namespacing-Konventionen organisieren: 'fs:read-file', 'db:query', 'window:minimize'. Legen Sie die Kanalnamen in einer gemeinsamen Konstantendatei ab, die sowohl von main.js als auch vom Preload-Skript importiert wird. So verhindern Sie Tippfehler und machen Refactorings sicherer.
Rückgabewert von ipcMain.handle
Was geschieht mit dem Wert, den ein ipcMain.handle-Handler zurückgibt?
Zusammenfassung der Lektion
IPC bildet das Rückgrat der Kommunikation in Electron. ipcMain.handle und ipcRenderer.invoke bilden ein Promise-basiertes Anfrage-Antwort-Paar für vom Renderer initiierte Vorgänge. Für vom Hauptprozess initiierte Push-Nachrichten arbeiten webContents.send und ipcRenderer.on zusammen. Jegliche IPC-Kommunikation im Renderer muss über die contextBridge des Preload-Skripts geleitet werden, und Listener sollten immer bereinigt werden, um Speicherlecks zu verhindern.
Häufig gestellte Fragen
Ist die Lektion „IPC-Kommunikation zwischen Prozessen“ kostenlos?
Ja — der vollständige Text von „IPC-Kommunikation zwischen Prozessen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „IPC-Kommunikation zwischen Prozessen“?
Verwenden Sie ipcMain und ipcRenderer, um Nachrichten sicher zwischen dem Main-Prozess und dem React-Renderer auszutauschen. Du übst React Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um React Academy zu starten?
Keine Vorkenntnisse erforderlich. React Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „IPC-Kommunikation zwischen Prozessen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser React Academy-Lektion Code schreiben und ausführen?
Ja. Jede React Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Electron-Architektur: Main- und Renderer-Prozesse
- React mit Electron einrichten
- IPC-Kommunikation zwischen Prozessen
- Paketierung und Distribution für Desktop-Plattformen