如何区分一个ipc主服务器(同一通道)中的两个ipc渲染器

时间:2019-05-24 13:56:35

标签: electron ipc ipcmain

我想检测特定的frame / browserWindow。我有一个主进程和两个浏览器窗口,这三个窗口都使用相同的通道相互发送消息。在IPCMain中,我需要检测其中之一。我看到IPCmain事件具有一个名为frameId的函数,但是当我使用它时,却无法定义。

ipcMain.once("postMessage", (event, message) => {
    if(!activeRequest) return;
    activeRequest.json(message).send();
});

2 个答案:

答案 0 :(得分:1)

您可以在ipc消息的payoad中传递身份,也可以通过ipc消息的发件人对象获取Windows Web内容ID。

答案 1 :(得分:1)

您可以通过访问事件对象(第一个参数)中的发件人对象来从主进程获取当前的webcontent ID。

   console.log(event.sender.webContents.id);

您还可以通过渲染器过程传递eent所来自的窗口的ID。

  // in the renderer process do this
  electron.ipcRenderer.send("new-message", { 
      winId: electron.remote.getCurrentWebContents().id , 
      message: "Hi"
  });

当主进程收到此事件时,您只需访问消息对象中的winId属性