Aller au contenu principal

ipcMain

Communiquer de manière asynchrone depuis le processus main aux processus renderer.

Processus : Main

Le module ipcMain est un Event Emitter. Lorsqu'il est utilisé dans le processus main, il gère les messages asynchrones et synchrones envoyés à partir d'un processus renderer (page web). Les messages envoyés par un renderer seront émis vers ce module.

For usage examples, check out the IPC tutorial.

Sending messages

Il est également possible d'envoyer des messages depuis le processus main pour le processus renderer. Voir webContents.send pour plus d'information.

  • Lors de l'envoi d'un message, le nom de l'événement est channel.
  • Pour répondre à un message synchrone, vous devez définir event.returnValue.
  • Pour renvoyer un message asynchrone à l'expéditeur, vous pouvez utiliser event.reply(...). Cette méthode d'aide gérera automatiquement les messages provenant des images qui ne sont pas le cadre principal (e. . iframes) alors que event.sender.send(...) enverra toujours au cadre principal.

Méthodes

Le module de ipcMain possède les méthodes suivantes pour écouter les événements :

ipcMain.on(channel, listener)

  • channel string
  • listener Function

En écoutant channel, lorsqu'un nouveau message arrive, listener sera appelé comme ceci listener(event, args...).

ipcMain.once(channel, listener)

  • channel string
  • listener Function

Ajoute un listener à déclenchement unique pour l’événement. Ce listener sera appelé uniquement lors de la prochaine émission d'un message sur le channel, après quoi il sera supprimé.

ipcMain.removeListener(channel, listener)

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

Supprime le listener spécifié du tableau d'écouteurs pour le channel spécifié.

ipcMain.removeAllListeners([channel])

  • channel string (facultatif)

Supprime tous les écouteurs du channel spécifié.

ipcMain.handle(canal, écouteur)

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

Adds a handler for an invokeable IPC. This handler will be called whenever a renderer calls ipcRenderer.invoke(channel, ...args).

Si listener renvoie une Promise, le résultat final de la promesse sera retourné en réponse à l'appelant distant. Sinon, la valeur de retour de l'écouteur sera utilisée comme valeur de la réponse.

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)
// ...
}

Le event qui est passé comme premier argument au gestionnaire est le même que que celui passé à un event listener régulier. Il contient des informations sur lequel WebContents est la source de la demande d'appel.

Errors thrown through handle in the main process are not transparent as they are serialized and only the message property from the original error is provided to the renderer process. Please refer to #24427 for details.

ipcMain.handleOnce(channel, listener)

  • channel string
  • listener Function<Promise\<void> | any>
    • événement IpcMainInvokeEvent
    • ...args any[]

Handles a single invokeable IPC message, then removes the listener. See ipcMain.handle(channel, listener).

ipcMain.removeHandler(channel)

  • channel string

Supprime tout gestionnaire pour canal, si présent.

Objet IpcMainEvent

La documentation de l'objet événement passé à la callback peut être trouvée dans la documentation de la structure ipc-main-event.

Objet IpcMainInvokeEvent

La documentation de l'objet événement passé à handle callbacks peut être trouvée dans la documentation de la structure ipc-main-invoke-event .