V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
TomeWong
V2EX  ›  程序员

Electron 创建子进程处理 上传文件的 MD5 计算和上传逻辑

  •  
  •   TomeWong · 2020-04-09 16:29:11 +08:00 · 2411 次点击
    这是一个创建于 1471 天前的主题,其中的信息可能已经有所发展或是发生改变。

    创建子进程处理计算和读文件流,以及上传的逻辑,而不是放在渲染进程中。

    创建子进程,子进程的程序怎么执行,放在什么位置,放在主进程中?

    如果放在主进程中,渲染进程的数据如何传递到子进程,而且上传的逻辑是实时处理,这部分数据如何进行同步和更新

    有一部分数据是放在 vuex 中,计算 MD5 值需要从 vuex 获取数据,子进程可以获取 vuex 中的数据么?

    12 条回复    2020-04-10 12:03:28 +08:00
    TomeWong
        1
    TomeWong  
    OP
       2020-04-09 16:35:06 +08:00
    尝试了 node 的 child_process,放在了渲染进程,代码没有执行,但放在主进程数据如何同步和更新
    tojonozomi
        2
    tojonozomi  
       2020-04-09 16:46:03 +08:00
    或者用 service worker ?反正数据拿到 worker 要走消息,拿到 child_process 的话要走 ipc
    TomeWong
        3
    TomeWong  
    OP
       2020-04-09 16:49:32 +08:00
    @tojonozomi ipcRender 可以实时更新和同步数据么?
    rabbbit
        4
    rabbbit  
       2020-04-09 16:53:05 +08:00
    可以用 child_process.fork 配合 send 和 on("message")
    TomeWong
        5
    TomeWong  
    OP
       2020-04-09 17:01:57 +08:00
    @rabbbit 我试了,放在 render 进程没有执行,这部分是不是要放在 main 进程中
    vagary
        6
    vagary  
       2020-04-09 17:11:24 +08:00
    印象里面,render 和 main 通信有 api 。先扔给 main,有需要的话,mian 和 child 继续通信。
    是我的话,vuex 中没必要处理了,render 在得到相关的全部数据之后,一次扔给 main 算了。减轻管理 render 和 main 通信复杂度,同时还要兼顾 render 自己的逻辑。最多加个 vuex 里加个状态等着 main 是否处理完。
    ArrayBuffer
        7
    ArrayBuffer  
       2020-04-09 17:33:13 +08:00
    感觉没必要创建子进程,在主进程处理就好了, 或者直接放到渲染进程 ...
    TomeWong
        8
    TomeWong  
    OP
       2020-04-09 17:40:47 +08:00
    @ArrayBuffer 现在的处理是放在渲染进程中,但上传的的文件过多时,页面会出现卡顿,不响应,这个过程需要计算文件的 MD5 值,读文件流和上传
    jason94
        9
    jason94  
       2020-04-09 18:40:27 +08:00
    开个隐藏的 renderer 进程去做处理,vuex 中的数据走 ipc 或者 localStorage 都可以
    duan602728596
        10
    duan602728596  
       2020-04-09 19:51:38 +08:00 via iPhone
    上传文件,一定要用 fs 吗?如果用 File 对象上传的话,其实计算什么的反而可以放到 WebWorker 里来处理
    vampuke
        11
    vampuke  
       2020-04-10 10:24:06 +08:00
    主进程用 mainWindow.webContents.send()发送给子进程
    TomeWong
        12
    TomeWong  
    OP
       2020-04-10 12:03:28 +08:00
    @duan602728596 在 webworker 里不能使用 require
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2877 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 311ms · UTC 14:28 · PVG 22:28 · LAX 07:28 · JFK 10:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.