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
stringlistener
Functionevent
IpcMainEvent...args
any[]
channel
に新しいメッセージが来たときに listener
が listener(event, args...)
として呼ばれます、
ipcMain.off(channel, listener)
channel
stringlistener
Functionevent
IpcMainEvent...args
any[]
指定した channel
の listener 配列から、指定した listener
を削除します。
ipcMain.once(channel, listener)
channel
stringlistener
Functionevent
IpcMainEvent...args
any[]
イベントに対する一回限りの listener
関数を追加します。 この listener
は、次にメッセージが channel
へ送信されたときに、削除されてから呼び出されます。
ipcMain.addListener(channel, listener)
channel
stringlistener
Functionevent
IpcMainEvent...args
any[]
ipcMain.on
の別名です。
ipcMain.removeListener(channel, listener)
channel
stringlistener
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
stringlistener
Function<Promise<any> | any>event
IpcMainInvokeEvent...args
any[]
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)
channel
stringlistener
Function<Promise<any> | any>event
IpcMainInvokeEvent...args
any[]
1 つの invoke
可能な IPC メッセージを処理し、リスナーを削除します。 ipcMain.handle(channel, listener)
を参照してください。
ipcMain.removeHandler(channel)
channel
string
channel
にハンドラがあれば削除します。