Как различить два ipc рендера в одном главном ipc (тот же канал) - PullRequest
1 голос
/ 24 мая 2019

Я хочу определить конкретный кадр / browserWindow. У меня есть один основной процесс и два окна браузера, которые все три посылают сообщения друг другу по одному каналу. в IPCMain мне нужно обнаружить один из них. Я видел, что у события IPCmain есть функция с именем frameId, но когда я ее использую, я получаю неопределенное значение.

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

Ответы [ 2 ]

1 голос
/ 24 мая 2019

Вы можете получить текущий идентификатор веб-контента из основного процесса, обратившись к объекту отправителя в объекте событий, который является первым аргументом.

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

Вы также можете передать идентификатор окна, из которого поступает событие, через процесс рендеринга.

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

когда главный процесс получает это событие, вам просто нужно получить доступ к свойству winId в объекте сообщения

1 голос
/ 24 мая 2019

Либо вы можете передать идентификационные данные в ipc message payoad, либо вы можете получить идентификатор веб-содержимого Windows через объект отправителя сообщения ipc.

...