Javascript Electron:使用IPC(或任何其他工具)共享DOM数据(例如发送img或画布)

Javascript Electron:使用IPC(或任何其他工具)共享DOM数据(例如发送img或画布),javascript,electron,pixi.js,Javascript,Electron,Pixi.js,我试图在一个单独的过程中重新缩放一堆PIXI.js纹理,以便渲染UI线程保持响应。js与这个问题无关,但我想提供更多关于我所做工作的上下文 不幸的是,我不能让它工作。起初,我试图生成/分叉子进程,但结果证明我只能在父进程和分叉进程之间共享JSON编码的数据。糟糕透了 因此,我决定打开一个隐藏的浏览器窗口,并在那里重新打包 基本上,我是在渲染过程中这样做的: // Start packing ... Say, urls.length > 1000, so it's quite a lot!

我试图在一个单独的过程中重新缩放一堆PIXI.js纹理,以便渲染UI线程保持响应。js与这个问题无关,但我想提供更多关于我所做工作的上下文

不幸的是,我不能让它工作。起初,我试图生成/分叉子进程,但结果证明我只能在父进程和分叉进程之间共享JSON编码的数据。糟糕透了

因此,我决定打开一个隐藏的浏览器窗口,并在那里重新打包

基本上,我是在渲染过程中这样做的:

// Start packing ... Say, urls.length > 1000, so it's quite a lot!
const textureArray = urls.map((url, i) => {
  // get the texture (from cache, sync operation) + scale it
  const texture = PIXI.Texture.fromImage(url, undefined, undefined, 0.3);
  return texture;
});

// log data in the "hidden" window (I made it visible to access the logs, but it doesn't matter)
console.log("Done!")
console.log(textureArray)

// send to main process
ipcRenderer.send('textures', textureArray)
打乒乓球的主要过程:

  ipcMain.on('textures', (event, data) => {
    console.log("Got textures in the main")
    // sending data to another window
    mainWindow.webContents.send("textures", data)
  })
只需在第二个渲染器窗口中记录接收到的数据(使用主UI,我尝试不阻止它)

现在,当我比较发送的内容和接收的内容时,我注意到了细微的变化:我接收的数据中缺少HTML元素

我理解为什么会发生这种情况:我试图发送的数据包含指向DOM元素的链接,而不是DOM元素本身,而且IPC协议似乎不知道如何序列化它。(以防万一:要发送的数据不在DOM树中,而是在内部使用
new Image()
创建的)

我的问题是,在电子窗口之间交换这些数据的方法是什么,或者,也许有另一种方法来解决我的问题?我将感谢任何帮助