ipcMain
メインプロセスからレンダラプロセスへ非同期的に通信します。
プロセス: メイン
ipcMainモジュールはイベントエミッタです。メインプロセスで使用される場合、レンダラプロセス(ウェブページ)から送信された非同期および同期のメッセージを処理します。レンダラから送信されたメッセージはこのモジュールに送出されます。
使用例については、IPCチュートリアルを参照してください。
メッセージの送信
メインプロセスからレンダラプロセスにメッセージを送信することもできます。詳細については、webContents.sendを参照してください。
- メッセージを送信する場合、イベント名は
channelです。 - 同期のメッセージに返信するには、
event.returnValueを設定する必要があります。 - 送信者に非同期メッセージを送信するには、
event.reply(...)を使用できます。このヘルパーメソッドは、メインフレームではないフレーム(例:iframe)から送信されたメッセージを自動的に処理しますが、event.sender.send(...)は常にメインフレームに送信します。
メソッド
ipcMainモジュールには、イベントをリッスンするための次のメソッドがあります。
ipcMain.on(channel, listener)
channel文字列listener関数eventIpcMainEvent...argsany[]
channelをリッスンします。新しいメッセージが到着すると、listener(event, args...)でlistenerが呼び出されます。
ipcMain.once(channel, listener)
channel文字列listener関数eventIpcMainEvent...argsany[]
イベントに対して一度だけ実行されるlistener関数を追加します。このlistenerは、channelにメッセージが送信された次の回だけ呼び出され、その後削除されます。
ipcMain.removeListener(channel, listener)
channel文字列listener関数...argsany[]
指定されたchannelのリッスナ配列から指定されたlistenerを削除します。
ipcMain.removeAllListeners([channel])
channel文字列(オプション)
指定されたchannelのリッスナを削除します。
ipcMain.handle(channel, listener)
channel文字列listenerFunction<Promise<any> | any>eventIpcMainInvokeEvent...argsany[]
呼び出し可能な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文字列listenerFunction<Promise<any> | any>eventIpcMainInvokeEvent...argsany[]
単一の呼び出し可能なIPCメッセージを処理し、その後リスナーを削除します。ipcMain.handle(channel, listener)を参照してください。
ipcMain.removeHandler(channel)
channel文字列
存在する場合は、channelのハンドラを削除します。