{"id":25478364,"url":"https://github.com/vag-zhao/device-net-tracker","last_synced_at":"2026-04-13T22:34:30.879Z","repository":{"id":278180139,"uuid":"934779564","full_name":"vag-Zhao/Device-NET-Tracker","owner":"vag-Zhao","description":"远程监控客户机的网络连接，支持断开并忘记已连接WiFi信息（暂未开发处理以太网功能）","archived":false,"fork":false,"pushed_at":"2025-02-18T12:02:52.000Z","size":187,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-18T04:12:33.476Z","etag":null,"topics":["electron","javascript","typescript","vue3","websocket"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vag-Zhao.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-18T11:48:03.000Z","updated_at":"2025-02-18T12:36:05.000Z","dependencies_parsed_at":"2025-02-18T12:39:28.044Z","dependency_job_id":"49e5dbe1-4ed4-406a-b1e7-e8866de35242","html_url":"https://github.com/vag-Zhao/Device-NET-Tracker","commit_stats":null,"previous_names":["vag-zhao/device-net-tracker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vag-Zhao/Device-NET-Tracker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vag-Zhao%2FDevice-NET-Tracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vag-Zhao%2FDevice-NET-Tracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vag-Zhao%2FDevice-NET-Tracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vag-Zhao%2FDevice-NET-Tracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vag-Zhao","download_url":"https://codeload.github.com/vag-Zhao/Device-NET-Tracker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vag-Zhao%2FDevice-NET-Tracker/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262905114,"owners_count":23382504,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["electron","javascript","typescript","vue3","websocket"],"created_at":"2025-02-18T14:31:44.168Z","updated_at":"2026-04-13T22:34:30.738Z","avatar_url":"https://github.com/vag-Zhao.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/electron/electron-original.svg\" width=\"120\"/\u003e\n  \u003ch1 align=\"center\"\u003e设备监控系统\u003c/h1\u003e\n  \n  \u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Electron-28.0.0-47848F?style=for-the-badge\u0026logo=electron\u0026logoColor=white\u0026labelColor=2b2b2b\"/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/TypeScript-5.7.3-3178C6?style=for-the-badge\u0026logo=typescript\u0026logoColor=white\u0026labelColor=2b2b2b\"/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/MongoDB-4.4+-47A248?style=for-the-badge\u0026logo=mongodb\u0026logoColor=white\u0026labelColor=2b2b2b\"/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Node.js-14+-339933?style=for-the-badge\u0026logo=node.js\u0026logoColor=white\u0026labelColor=2b2b2b\"/\u003e\n  \u003c/p\u003e\n\n  \u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Windows-支持-blue?style=flat-square\u0026logo=windows\u0026logoColor=white\"/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/版本-1.0.0-orange?style=flat-square\"/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/许可证-MIT-yellow?style=flat-square\"/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/构建状态-通过-success?style=flat-square\u0026logo=github-actions\u0026logoColor=white\"/\u003e\n  \u003c/p\u003e\n  \u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/devicons/devicon/master/icons/electron/electron-original.svg\" width=\"60\"/\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/devicons/devicon/master/icons/typescript/typescript-original.svg\" width=\"60\"/\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/devicons/devicon/master/icons/nodejs/nodejs-original.svg\" width=\"60\"/\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/devicons/devicon/master/icons/mongodb/mongodb-original.svg\" width=\"60\"/\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cp\u003e这是一个基于 Electron 和 WebSocket 的设备监控系统，包含客户端和服务器端两个部分。\u003c/p\u003e\n  \u003cp\u003e系统可以实时监控设备状态、网络连接情况，并提供远程 WiFi 管理功能。\u003c/p\u003e\n\u003c/div\u003e\n\n---\n\n## 目录\n\n- [系统架构](#系统架构)\n- [技术栈](#技术栈)\n  - [客户端](#客户端)\n  - [服务器端](#服务器端)\n- [系统特性](#系统特性)\n- [安全性设计](#安全性设计)\n- [性能优化](#性能优化)\n  - [客户端优化](#客户端优化)\n  - [服务器端优化](#服务器端优化)\n- [部署指南](#部署指南)\n  - [环境要求](#环境要求)\n  - [配置说明](#配置说明)\n  - [部署步骤](#部署步骤)\n  - [防火墙配置](#防火墙配置)\n  - [验证部署](#验证部署)\n- [开发规范](#开发规范)\n- [更新日志](#更新日志)\n- [贡献指南](#贡献指南)\n- [许可证](#许可证)\n\n---\n\n## 系统架构\n\n```mermaid\ngraph TB\n    subgraph 客户端[客户端 ET]\n        A1[Electron 主进程] --\u003e B1[系统托盘]\n        A1 --\u003e B2[WebSocket 客户端]\n        A1 --\u003e B3[设备信息采集]\n        A1 --\u003e B4[WiFi 管理]\n        B3 --\u003e C1[序列号]\n        B3 --\u003e C2[网络接口]\n        B3 --\u003e C3[WiFi 状态]\n    end\n\n    subgraph 服务器[服务器端 ET-SERVER]\n        D1[Express 服务器] --\u003e E1[WebSocket 服务器]\n        D1 --\u003e E2[MongoDB 数据库]\n        D1 --\u003e E3[RESTful API]\n        D1 --\u003e E4[认证系统]\n        E1 --\u003e F1[设备连接管理]\n        E1 --\u003e F2[实时状态更新]\n        E2 --\u003e F3[设备信息存储]\n        E3 --\u003e F4[设备管理接口]\n    end\n\n    B2 \u003c--\u003e E1\n    \n    style 客户端 fill:#ecf0f1,stroke:#bdc3c7\n    style 服务器 fill:#ecf0f1,stroke:#bdc3c7\n```\n\n## 技术栈\n\n### 客户端\n- Electron 28.0.0\n- TypeScript 5.7.3\n- WebSocket (ws)\n- Windows Native API\n\n### 服务器端  \n- Node.js 14+\n- Express 4.21.2\n- MongoDB 4.4+\n- WebSocket (ws)\n- JWT 认证\n\n## 系统特性\n\n| 特性 | 描述 |\n|------|------|\n| 🔒 安全认证 | 基于 JWT 的身份验证和授权 |\n| 🔄 实时监控 | WebSocket 实现设备状态实时更新 |\n| 📡 网络管理 | 远程 WiFi 配置和管理功能 |\n| 💾 数据持久化 | MongoDB 存储设备信息和历史记录 |\n\n## 安全性设计\n\n```mermaid\nflowchart TD\n    A[客户端请求] --\u003e B{JWT 验证}\n    B --\u003e|验证通过| C[访问资源]\n    B --\u003e|验证失败| D[拒绝访问]\n    C --\u003e E{权限检查}\n    E --\u003e|允许| F[执行操作]\n    E --\u003e|禁止| G[返回错误]\n```\n\n## 📈 性能优化\n\n### 客户端优化\n- 使用 TypeScript 提升代码质量\n- 实现单实例锁防止重复启动\n- 资源使用优化和内存管理\n- 自动重连机制\n\n### 服务器端优化\n- 数据库索引优化\n- 连接池管理\n- 错误处理和日志记录\n- 定时清理离线设备\n\n## 部署指南\n\n### 环境要求\n\u003cdiv align=\"center\"\u003e\n  \u003ctable\u003e\n    \u003ctr\u003e\n      \u003cth\u003e组件\u003c/th\u003e\n      \u003cth\u003e最低要求\u003c/th\u003e\n      \u003cth\u003e推荐配置\u003c/th\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e操作系统\u003c/td\u003e\n      \u003ctd\u003eWindows 10\u003c/td\u003e\n      \u003ctd\u003eWindows 10/11\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eNode.js\u003c/td\u003e\n      \u003ctd\u003e14.x\u003c/td\u003e\n      \u003ctd\u003e16.x 或更高\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003eMongoDB\u003c/td\u003e\n      \u003ctd\u003e4.4\u003c/td\u003e\n      \u003ctd\u003e5.0 或更高\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e内存\u003c/td\u003e\n      \u003ctd\u003e4GB\u003c/td\u003e\n      \u003ctd\u003e8GB 或更高\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/table\u003e\n\u003c/div\u003e\n\n### 配置说明\n\n#### 1. 数据库配置\n在 `et-server/src/config/database.ts` 文件中配置您的 MySQL连接信息：\n\n```typescript\nexport const dbConfig = {\n    host: 'your-mongodb-host',     // MongoDB 服务器地址\n    port: 3307,                    // MongoDB 端口\n    user: 'your-username',         // 数据库用户名\n    password: 'your-password',     // 数据库密码\n    database: 'your-database',     // 数据库名称\n    // ... 其他配置保持不变\n};\n```\n\n\n#### 2. 服务器配置\n创建 `et-server/src/config/server.ts` 文件：\n\n```typescript\nexport const serverConfig = {\n    port: 3000,                    // 服务器端口\n    jwtSecret: 'your-jwt-secret',  // JWT 密钥\n    corsOrigin: '*',               // CORS 配置\n    wsPort: 8080                   // WebSocket 端口\n};\n```\n\n#### 3. 客户端配置\n在 `et/src/config/app.ts` 中配置服务器连接信息：\n\n```typescript\nexport const appConfig = {\n    serverUrl: 'http://your-server-ip:3000',\n    wsUrl: 'ws://your-server-ip:8080',\n    // ... 其他配置\n};\n```\n\n\n### 部署步骤\n\n#### 服务器端部署\n\n1. 安装 MongoDB\n```bash\n# Ubuntu/Debian\nsudo apt update\nsudo apt install -y mongodb\n\n# CentOS\nsudo yum install -y mongodb-org\n```\n\n2. 启动 MongoDB 服务\n```bash\nsudo systemctl start mongod\nsudo systemctl enable mongod\n```\n\n\n3. 部署服务器应用\n```bash\ncd et-server\n\n# 安装依赖\nnpm install\n\n# 编译 TypeScript\nnpm run build\n\n# 使用 PM2 启动服务\nnpm install -g pm2\npm2 start dist/app.js --name et-server\n```\n\n![pm2-status](./pm2-status.png)\n\n#### 客户端部署\n\n1. 安装依赖并构建\n```bash\ncd et\nnpm install\nnpm run build\n```\n\n2. 打包应用\n```bash\n# Windows\nnpm run package:win\n\n# macOS\nnpm run package:mac\n```\n\n\n### 防火墙配置\n\n确保以下端口已开放：\n- 3000: REST API\n- 8080: WebSocket\n- 3307: MySQL\n\n```bash\n# Ubuntu/Debian\nsudo ufw allow 3000\nsudo ufw allow 8080\nsudo ufw allow 3307\n\n# CentOS\nsudo firewall-cmd --permanent --add-port=3000/tcp\nsudo firewall-cmd --permanent --add-port=8080/tcp\nsudo firewall-cmd --permanent --add-port=3307/tcp\nsudo firewall-cmd --reload\n```\n\n\n### 验证部署\n\n1. 检查服务器状态\n```bash\ncurl http://your-server-ip:3000/health\n```\n\n2. 检查 WebSocket 连接\n```bash\nwscat -c ws://your-server-ip:8080\n```\n\n\n## 开发规范\n\n### Git 提交规范\n\u003cdiv align=\"center\"\u003e\n  \u003ctable\u003e\n    \u003ctr\u003e\n      \u003cth\u003e类型\u003c/th\u003e\n      \u003cth\u003e说明\u003c/th\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e🎯 feat\u003c/td\u003e\n      \u003ctd\u003e新功能\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e🐛 fix\u003c/td\u003e\n      \u003ctd\u003e修复问题\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e📚 docs\u003c/td\u003e\n      \u003ctd\u003e文档更新\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e🎨 style\u003c/td\u003e\n      \u003ctd\u003e代码格式\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e♻️ refactor\u003c/td\u003e\n      \u003ctd\u003e代码重构\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e✅ test\u003c/td\u003e\n      \u003ctd\u003e测试相关\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e🔧 chore\u003c/td\u003e\n      \u003ctd\u003e构建/工具\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/table\u003e\n\u003c/div\u003e\n\n## 更新日志\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/github/github-original.svg\" width=\"40\"/\u003e\n\n  ### v1.0.0 (2024-01-20)\n  - ✨ 初始版本发布\n  - 🔒 完善认证系统\n  - 🔧 优化设备管理\n  - 📡 增强网络功能\n\n## 贡献指南\n\n1. Fork 项目\n2. 创建特性分支\n3. 提交更改\n4. 推送到分支\n5. 创建 Pull Request\n\n## 📄 许可证\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge\"/\u003e\n\u003c/div\u003e\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/electron/electron-original.svg\" width=\"30\"/\u003e\n  \u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/typescript/typescript-original.svg\" width=\"30\"/\u003e\n  \u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/nodejs/nodejs-original.svg\" width=\"30\"/\u003e\n  \u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/mongodb/mongodb-original.svg\" width=\"30\"/\u003e\n  \u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/express/express-original.svg\" width=\"30\"/\u003e\n  \u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/javascript/javascript-original.svg\" width=\"30\"/\u003e\n\n  \u003csub\u003e\n    \u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/github/github-original.svg\" width=\"16\"/\u003e\n    Built with ❤️ by zgs3344\n  \u003c/sub\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvag-zhao%2Fdevice-net-tracker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvag-zhao%2Fdevice-net-tracker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvag-zhao%2Fdevice-net-tracker/lists"}