如何在一个 ipc main(同一通道)中区分两个 ipc 渲染器
How to differentiate two ipc renderer in one ipc main (same channel)
我想检测具体的 frame/browserWindow。我有一个主进程和两个浏览器 windows,这三个浏览器都使用相同的通道相互发送消息。在 IPCMain 中,我需要检测其中之一。我看到 IPCmain 事件有一个名为 frameId 的函数,但是当我使用它时,我得到了 undefined。
ipcMain.once("postMessage", (event, message) => {
if(!activeRequest) return;
activeRequest.json(message).send();
});
您可以在 ipc 消息负载中传递身份,或者您可以通过 ipc 消息的发件人对象获取 windows 网络内容 ID。
您可以通过访问作为第一个参数的事件对象中的发送者对象,从主进程中获取当前的网页内容 ID。
console.log(event.sender.webContents.id);
您还可以通过渲染器进程传递事件来自的 window 的 ID。
// in the renderer process do this
electron.ipcRenderer.send("new-message", {
winId: electron.remote.getCurrentWebContents().id ,
message: "Hi"
});
当主进程收到这个事件时,你只需要访问消息对象中的winId
属性
我想检测具体的 frame/browserWindow。我有一个主进程和两个浏览器 windows,这三个浏览器都使用相同的通道相互发送消息。在 IPCMain 中,我需要检测其中之一。我看到 IPCmain 事件有一个名为 frameId 的函数,但是当我使用它时,我得到了 undefined。
ipcMain.once("postMessage", (event, message) => {
if(!activeRequest) return;
activeRequest.json(message).send();
});
您可以在 ipc 消息负载中传递身份,或者您可以通过 ipc 消息的发件人对象获取 windows 网络内容 ID。
您可以通过访问作为第一个参数的事件对象中的发送者对象,从主进程中获取当前的网页内容 ID。
console.log(event.sender.webContents.id);
您还可以通过渲染器进程传递事件来自的 window 的 ID。
// in the renderer process do this
electron.ipcRenderer.send("new-message", {
winId: electron.remote.getCurrentWebContents().id ,
message: "Hi"
});
当主进程收到这个事件时,你只需要访问消息对象中的winId
属性