基于node的net模块实现electron的管道通信

前言

electron分了主进程和渲染进程, 如果在主进程中执行的时间过长会导致页面卡顿,因为主进程管理者渲染器进程,为了优化,做了很多的一个方案:

1. 再开一个BrowserWindow 窗口来处理这些逻辑,设置这个窗口隐藏,然后通过electron内置的ipc进行消息的通讯
2. 利用webWorker来处理这些复杂的逻辑
3. 使用golang等处理业务,打包成exe,使用node的child_process启动exe,通过socket处理
4. 通过的node的fork启动一个node服务来处理逻辑 
...

像1、3、4这种本质上是要开多一个进程去处理,那么进程之间的通信就很重要了,比如socket,ipcRender,ipcMain。

我有个项目就用了socket做了通信,不过用socket做通信可能会遇到端口占用的情况,就是你先跑了socket,然后端口被其他应用占掉,这时注意重新拉起。

命名管道通信

回归正题,现在做一个使用net模块实现electron主进程和node进程的命名管道通信,功能比较简单,就是获取文件夹下所有的文件和文件夹。

这边读取文件夹下所有文件和文件夹作为Server,electron主进程是client

fileDirRead.js:

const net = require("net");
const pipeFile =
  process.platform === "win32" ? "\\\\.\\pipe\\rfpip" : "/tmp/rfpip.sock";
const fs = require("fs");
const path = require("path");
const readDir = (dirPath, arr) => {
   
  const dirs = [];
  const files = fs.readdirSync(dirPath);
  files.forEach((file) => {
   
    const localPath = path.join(dirPath, file);
    if (fs.statSync(localPath).isDirectory()) {
   
      dirs.push(localPath);
    }
    arr.push(localPath);
  });
  while (dirs.length > 0) {
   
    const dir = dirs.shift();
    const parent = dir;
    const files = fs.readdirSync(dir);
    files.forEach((file) => {
   
      const localPath = path
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧停车系统是一种基于物联网技术的智能停车系统,可以通过各种传感器和智能设备实现车位管理、车辆识别、停车预约、收费管理等功能,提高停车场的利用率和管理效率,为用户提供便捷的停车服务。 实现智慧停车系统可以使用electron框架进行开发,electron是一种跨平台的桌面应用程序开发框架,可以使用HTML、CSS和JavaScript等Web技术构建桌面应用程序。 以下是基于electron实现智慧停车系统的步骤: 1. 设计系统架构和功能模块,包括车位管理、车辆识别、停车预约、收费管理等模块。 2. 使用HTML、CSS和JavaScript等Web技术开发前端界面,可以使用框架如React、Vue等来加快开发效率。 3. 使用electron提供的API来实现与底层系统的交互,如读取传感器数据、控制设备等。 4. 开发后端服务器,实现系统的数据管理、用户认证、支付等功能。 5. 集成第三方支付平台,实现在线支付功能。 6. 进行测试和调试,确保系统的稳定性和可用性。 7. 发布和部署,将应用程序打包成可执行文件或安装包,并发布到各个平台上,如Windows、MacOS、Linux等。 通过使用electron框架来实现智慧停车系统,可以快速开发跨平台的桌面应用程序,提高开发效率和用户体验。同时,使用Web技术进行开发,也可以方便地与其他Web系统进行集成,实现更多的功能和服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值