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)
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 (任意)
Removes all listeners from the specified channel. Removes all listeners from all channels if no channel is specified.
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 にハンドラがあれば削除します。