0Pricing
React Academy · Pelajaran

Komunikasi IPC Antarproses

Gunakan ipcMain dan ipcRenderer untuk mengirim pesan secara aman antara proses utama dan perender React.

Komunikasi IPC Antarproses adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar React Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus React Academy mencakup 4 pelajaran total.

ipcMain.handle: Pola Permintaan dan Respons

ipcMain.handle mendaftarkan kanal bernama di proses utama yang merespons permintaan dari proses perender. Fungsi ini menerima fungsi penangan asinkron, dan nilai kembalinya menjadi nilai Promise yang telah diselesaikan di proses perender, sehingga ideal untuk operasi seperti membaca berkas atau mengkueri basis data.

ipcRenderer.invoke: Memanggil Proses Utama

ipcRenderer.invoke mengirim pesan melalui kanal bernama dan mengembalikan Promise yang diselesaikan dengan nilai kembalian dari penangan di proses utama. Hal ini membentuk pola permintaan dan respons asinkron yang bersih dan secara alami dapat digunakan dengan async/await baik dalam skrip pramuat maupun komponen React.

Mengekspos invoke melalui contextBridge

Skrip pramuat membungkus pemanggilan ipcRenderer.invoke dan mengeksposnya melalui contextBridge. Contohnya: api.readFile = (filePath) => ipcRenderer.invoke('read-file', filePath). Proses perender memanggil window.api.readFile(path) dan menerima Promise — bersih serta tersandbox.

Mengapa Proses Perender Tidak Pernah Mengimpor ipcRenderer

Dengan contextIsolation yang diaktifkan, proses perender tidak dapat menggunakan require('electron') atau mengimpor ipcRenderer secara langsung — modul tersebut tidak tersedia. Semua IPC harus melewati paparan contextBridge dari skrip pramuat. Hal ini memang disengaja: cara ini mencegah serangan XSS memperoleh akses IPC.

ipcMain.on: Pesan Sekali Kirim Tanpa Balasan

ipcMain.on mendengarkan pesan satu arah yang dikirim dengan ipcRenderer.send (bukan invoke). Tidak ada kanal respons otomatis — pola ini cocok untuk notifikasi atau perintah yang tidak memerlukan balasan dari proses perender, seperti mencatat peristiwa atau memicu notifikasi asli.

Mendorong Data dari Proses Utama ke Proses Perender

Proses utama dapat mendorong data ke proses perender menggunakan webContents.send('channel-name', data). Ini adalah cara utama proses utama memulai komunikasi — misalnya, meneruskan peristiwa pemantauan sistem berkas atau tindakan menu asli ke UI React.

Mendengarkan di Skrip Pramuat

Dalam skrip pramuat, ipcRenderer.on('update', callback) mendaftarkan pendengar untuk pesan yang dikirim oleh proses utama. Fungsi panggilan balik menerima peristiwa dan data apa pun yang dikirim proses utama, lalu Anda meneruskannya ke perender melalui fungsi yang diekspos oleh contextBridge.

Mengekspos Pendengar Peristiwa melalui contextBridge

Pola yang rapi untuk peristiwa yang dikirim secara proaktif adalah: api.onUpdate = (callback) => ipcRenderer.on('update', (_event, data) => callback(data)). Komponen React berlangganan dengan memanggil window.api.onUpdate(setData), dan fungsi panggilan balik memperbarui status saat proses utama mengirim data baru.

Pembersihan: Menghapus Pendengar Peristiwa

Setiap pendengar ipcRenderer.on harus dihapus ketika tidak lagi diperlukan untuk mencegah kebocoran memori dan fungsi panggilan balik ganda. Fungsi pramuat harus mengembalikan fungsi pembersihan (misalnya, () => ipcRenderer.removeListener('update', callback)) yang dipanggil React dari nilai pengembalian pembersihan useEffect.

Keamanan: Memvalidasi Masukan IPC

Masukan IPC dari perender harus diperlakukan sebagai data yang tidak tepercaya dalam penangan proses utama. Selalu validasi jalur berkas (cegah serangan penelusuran jalur), bersihkan parameter kueri, dan periksa apakah asal pengirim sesuai yang diharapkan. Jangan pernah mengekspos saluran IPC eval atau exec generik.

Menyusun Saluran IPC

Seiring pertumbuhan aplikasi, atur saluran IPC menggunakan konvensi pemberian ruang nama: 'fs:read-file', 'db:query', 'window:minimize'. Simpan nama saluran dalam berkas konstanta bersama yang diimpor oleh main.js dan skrip pramuat untuk mencegah kesalahan ketik dan membuat pemfaktoran ulang lebih aman.

Nilai Pengembalian ipcMain.handle

Apa yang terjadi pada nilai yang dikembalikan oleh penangan ipcMain.handle?

Ringkasan Pelajaran

IPC adalah tulang punggung komunikasi Electron. ipcMain.handle dan ipcRenderer.invoke membentuk pasangan permintaan-respons berbasis Promise untuk operasi yang dimulai perender. Untuk pengiriman yang dimulai proses utama, webContents.send dan ipcRenderer.on bekerja bersama. Semua IPC di perender harus disalurkan melalui contextBridge pada pramuat, dan pendengar harus selalu dibersihkan untuk mencegah kebocoran memori.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Komunikasi IPC Antarproses” gratis?

Ya — teks lengkap “Komunikasi IPC Antarproses” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus React Academy, upgrade ke CoddyKit PRO. Kursus React Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Komunikasi IPC Antarproses”?

Gunakan ipcMain dan ipcRenderer untuk mengirim pesan secara aman antara proses utama dan perender React. Kamu berlatih React Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai React Academy?

Tidak diperlukan pengalaman sebelumnya. React Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Komunikasi IPC Antarproses” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Arsitektur Electron: Proses Utama dan Perender
  2. Menyiapkan React dengan Electron
  3. Komunikasi IPC Antarproses
  4. Pengemasan dan Distribusi untuk Platform Desktop
← Kembali ke React Academy