メインコンテンツへ飛ぶ

ipcMain

メインプロセスからレンダラープロセスへ非同期で通信を行います。

Process: Main

ipcMain モジュールは Event Emitter を継承しています。 メインプロセスで使用される場合、レンダラープロセス (ウェブページ) から送られる非同期及び同期メッセージを処理します。 レンダラーから送信されたメッセージは、このモジュールに送られます。

For usage examples, check out the IPC tutorial.

メッセージを送信する

It is also possible to send messages from the main process to the renderer process, see webContents.send for more information.

  • メッセージを送信しているとき、イベント名は channel です。
  • 同期メッセージに返信をするには、event.returnValue を設定する必要があります。
  • 非同期メッセージを送信者に返送するには、event.reply(...) を使用できます。 このヘルパーメソッドはメインフレームではないフレーム (例: iframe) から来るメッセージを自動的に処理します。一方、event.sender.send(...) は常にメインフレームに送信されます。

メソッド

The ipcMain module has the following methods to listen for events:

ipcMain.on(channel, listener)

  • channel string
  • listener Function

channel に新しいメッセージが来たときに listenerlistener(event, args...) として呼ばれます、

ipcMain.off(channel, listener)

  • channel string
  • listener Function

指定した channel の listener 配列から、指定した listener を削除します。

ipcMain.once(channel, listener)

  • channel string
  • listener Function

イベントに対する一回限りの listener 関数を追加します。 この listener は、次にメッセージが channel へ送信されたときに、削除されてから呼び出されます。

ipcMain.addListener(channel, listener)

  • channel string
  • listener Function

ipcMain.on の別名です。

ipcMain.removeListener(channel, listener)

  • channel string
  • listener Function
    • ...args any[]

ipcMain.off の別名です。

ipcMain.removeAllListeners([channel])

  • channel string (任意)

Removes all listeners from the specified channel. Removes all listeners from all channels if no channel is specified.

ipcMain.handle(channel, listener)

  • channel string
  • listener Function<Promise<any> | any>

invoke 可能な IPC のハンドラを追加します。 このハンドラは、レンダラが ipcRenderer.invoke(channel, ...args) を呼び出したとき常に呼び出されます。

listener が Promise を返す場合、Promise の最終的な結果は、リモート呼び出し元への応答として返されます。 それ以外は、リスナーの戻り値が応答の値として使用されます。

Main Process
ipcMain.handle('my-invokable-ipc', async (event, ...args) => {
const result = await somePromise(...args)
return result
})
Renderer Process
async () => {
const result = await ipcRenderer.invoke('my-invokable-ipc', arg1, arg2)
// ...
}

ハンドラーの最初の引数として渡される event は、通常のイベントリスナーに渡されるものと同じです。 どの WebContents が呼び出しリクエスト元であるかに関する情報が含まれています。

メインプロセスの handle から投げられたエラーはシリアライズされ、元のエラーからの message プロパティのみがレンダラープロセスに提供されるため、非透過的です。 詳細は #24427 をご参照ください。

ipcMain.handleOnce(channel, listener)

  • channel string
  • listener Function<Promise<any> | any>

1 つの invoke 可能な IPC メッセージを処理し、リスナーを削除します。 ipcMain.handle(channel, listener) を参照してください。

ipcMain.removeHandler(channel)

  • channel string

channel にハンドラがあれば削除します。