ipcMain
メインプロセスからレンダラープロセスへ非同期で通信を行います。
プロセス: メイン
ipcMain モジュールは Event Emitter を継承しています。 メインプロセスで使用される場合、レンダラープロセス (ウェブページ) から送られる非同期及び同期メッセージを処理します。 レンダラーから送信されたメッセージは、このモジュールに送られます。
使用例については、 IPC チュートリアルをご覧ください。
メッセージを送信する
メインプロセスからレンダラープロセスにメッセージを送ることもできます。詳細は webContents.send を参照して下さい。
- メッセージを送信しているとき、イベント名は
channelです。 - 同期メッセージに返信をするには、
event.returnValueを設定する必要があります。 - 非同期メッセージを送信者に返送するには、
event.reply(...)を使用できます。 このヘルパーメソッドはメインフレームではないフレーム (例: iframe) から来るメッセージを自動的に処理します。一方、event.sender.send(...)は常にメインフレームに送信されます。
メソッド
ipcMain モジュールは、イベントを受け取るために以下のメソッドを持っています。
ipcMain.on(channel, listener)
channelstringlistenerFunctioneventIpcMainEvent...argsany[]
channel に新しいメッセージが来たときに listener が listener(event, args...) として呼ばれます、
ipcMain.off(channel, listener)
channelstringlistenerFunctioneventIpcMainEvent...argsany[]
指定した channel の listener 配列から、指定した listener を削除します。
ipcMain.once(channel, listener)
channelstringlistenerFunctioneventIpcMainEvent...argsany[]
イベントに対する一回限りの listener 関数を追加します。 この listener は、次にメッセージが channel へ送信されたときに、削除されてから呼び出されます。
ipcMain.addListener(channel, listener)
channelstringlistenerFunctioneventIpcMainEvent...argsany[]
ipcMain.on の別名です。
ipcMain.removeListener(channel, listener)
channelstringlistenerFunction...argsany[]
ipcMain.off の別名です。
ipcMain.removeAllListeners([channel])
channelstring (任意)
指定した channel のリスナーを全て削除します。 チャンネルが指定されていない場合、すべてのチャンネルのすべてのリスナーを削除します。
ipcMain.handle(channel, listener)
channelstringlistenerFunction<Promise<any> | any>eventIpcMainInvokeEvent...argsany[]
invoke 可能な IPC のハンドラを追加します。 このハンドラは、レンダラが ipcRenderer.invoke(channel, ...args) を呼び出したとき常に呼び出されます。
listener が Promise を返す場合、Promise の最終的な結果は、リモート呼び出し元への応答として返されます。 それ以外は、リスナーの戻り値が応答の値として使用されます。
ipcMain.handle('my-invokable-ipc', async (event, ...args) => {
const result = await somePromise(...args)
return result
})
async () => {
const result = await ipcRenderer.invoke('my-invokable-ipc', arg1, arg2)
// ...
}
ハンドラーの最初の引数として渡される event は、通常のイベントリスナーに渡されるものと同じです。 どの WebContents が呼び出しリクエスト元であるかに関する情報が含まれています。
メインプロセスの handle から投げられたエラーはシリアライズされ、元のエラーからの message プロパティのみがレンダラープロセスに提供されるため、非透過的です。 詳細は #24427 をご参照ください。
ipcMain.handleOnce(channel, listener)
channelstringlistenerFunction<Promise<any> | any>eventIpcMainInvokeEvent...argsany[]
1 つの invoke 可能な IPC メッセージを処理し、リスナーを削除します。 ipcMain.handle(channel, listener) を参照してください。
ipcMain.removeHandler(channel)
channelstring
channel にハンドラがあれば削除します。