1
votes

Lister tous les écouteurs de chaînes pour ipcRenderer dans Electron

Nous avons une application électronique. Nous ajoutons / supprimons des écouteurs en utilisant

const funct = () => {}
ipcRenderer.on('channel', funct);

// later...
ipcRenderer.removeListener('channel', funct)

Nous voulons nous assurer qu'aucun gestionnaire d'événements ne fuit dans notre application. Comment interroger ipcRenderer pour tous les auditeurs de chaînes?


0 commentaires

3 Réponses :


1
votes

Vous n'avez pas la possibilité de rechercher toutes les chaînes à la fois. La chose la plus proche est

https://electronjs.org/docs/api/ipc-renderer#ipcrendererremovealllistenerschannel

ipcRenderer.removeAllListeners(channel)

Vous pouvez supprimer tous les auditeurs de chaînes spécifiques. Vous devez toujours gérer vous-même la liste des chaînes.


1 commentaires

Je ne veux pas supprimer les auditeurs, juste pour savoir s'ils sont là ou non.



2
votes
  • ipcRenderer.eventNames () répertorie toutes les chaînes qui ont des écouteurs
  • ipcRenderer.rawListeners (channel) répertorie tous les auditeurs pour une chaîne particulière
  • ipcRenderer.eventNames().forEach(channel => ipcRenderer.rawListeners(channel))
    

0 commentaires

1
votes

Puisque ipcRenderer et ipcMain sont Node EventEmitter , vous pouvez utiliser l'API de base pour la gestion des événements.

eventNames peut être utilisé pour interroger chaque "canal" et removeAllListeners peut supprimer chaque auditeur d'un canal

Donc, ce code supprimera chaque auditeur de l'instance de l'émetteur

ipcRenderer.eventNames().forEach(n => {
  ipcRenderer.removeAllListeners(n)
})

Cependant, vous ne devriez pas faire cela en fait! (à partir de la documentation des nœuds)

Notez qu'il est déconseillé de supprimer les écouteurs ajoutés ailleurs dans le code, en particulier lorsque l'instance EventEmitter a été créée par un autre composant ou module (par exemple des sockets ou des flux de fichiers).


1 commentaires

Je ne veux pas supprimer les auditeurs, juste pour savoir s'ils sont là ou non. Cependant, eventNames () est vraiment utile. J'ai rassemblé tout ce que j'ai appris et créé une réponse. Merci de votre aide!