# easy-render **Repository Path**: no-oars/easy-render ## Basic Information - **Project Name**: easy-render - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-01 - **Last Updated**: 2025-11-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Easy Render - WebRTC云渲染平台 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Node.js Version](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen)](https://nodejs.org/) [![TypeScript](https://img.shields.io/badge/TypeScript-4.9+-blue)](https://www.typescriptlang.org/) 基于WebRTC的实时云渲染平台,支持低延迟3D渲染和多用户交互。参考[3dcat](https://www.3dcat.live/)实现核心功能。 ## ✨ 特性 - 🚀 **低延迟渲染**: 基于WebRTC的P2P连接,延迟<200ms - 🌐 **实时协作**: 支持多人同时访问和交互 - 🎮 **匿名访问**: 无需注册登录,即开即用 - 📦 **微服务架构**: 模块化设计,易于扩展 - 🔧 **自托管TURN**: 内置NAT穿透服务 - 💾 **Redis持久化**: 高性能会话和房间管理 - 🐳 **Docker支持**: 一键部署开发环境 - 📊 **性能监控**: 实时统计和健康检查 ## 🏗️ 架构设计 ``` ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 前端客户端 │ │ API服务器 │ │ 信令服务器 │ │ (React + Vite) │◄──►│ (Express) │◄──►│ (Socket.IO) │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ │ ▼ │ │ ┌─────────────────┐ │ │ │ Redis │ │ │ │ (会话管理) │ │ └──────────────►└─────────────────┘◄─────────────┘ │ ▼ ┌─────────────────┐ │ TURN服务器 │ │ (coturn) │ └─────────────────┘ ``` ## 🚀 快速开始 ### 环境要求 - Node.js >= 18.0.0 - npm >= 8.0.0 - Docker & Docker Compose ### 一键设置开发环境 #### Windows ```bash # 运行设置脚本 scripts\setup-dev.bat # 启动开发环境 scripts\start-dev.bat ``` #### Linux/macOS ```bash # 给脚本执行权限 chmod +x scripts/setup-dev.sh scripts/start-dev.sh # 运行设置脚本 ./scripts/setup-dev.sh # 启动开发环境 ./scripts/start-dev.sh ``` #### 使用Node.js脚本 ```bash # 环境设置 npm run setup:env # 安装依赖 npm run setup:deps # 启动开发环境 npm run start:dev ``` ### 手动设置 1. **克隆项目** ```bash git clone https://github.com/easy-render/easy-render.git cd easy-render ``` 2. **环境配置** ```bash # 复制环境变量文件 cp .env.example .env # 编辑环境变量(可选) vim .env ``` 3. **安装依赖** ```bash npm run install:all ``` 4. **启动服务** ```bash # 使用Docker启动(推荐) npm run start # 或者本地启动 npm run dev ``` ## 📦 项目结构 ``` easy-render/ ├── client/ # 前端应用 │ ├── src/ │ │ ├── components/ # React组件 │ │ ├── hooks/ # 自定义Hooks │ │ ├── services/ # API服务 │ │ └── utils/ # 工具函数 │ ├── public/ │ └── package.json ├── server/ # 后端服务 │ ├── src/ │ │ ├── config/ # 配置文件 │ │ ├── controllers/ # 控制器 │ │ ├── services/ # 业务逻辑 │ │ ├── middleware/ # 中间件 │ │ └── utils/ # 工具函数 │ └── package.json ├── shared/ # 共享模块 │ ├── src/ │ │ ├── types/ # TypeScript类型定义 │ │ ├── protocols/ # 通信协议 │ │ └── utils/ # 共享工具 │ └── package.json ├── docker/ # Docker配置 │ ├── nginx/ # Nginx配置 │ ├── redis/ # Redis配置 │ └── coturn/ # TURN服务器配置 ├── scripts/ # 脚本文件 └── docs/ # 文档 ``` ## 🛠️ 开发指南 ### 可用脚本 ```bash # 开发相关 npm run dev # 启动开发服务器 npm run build # 构建项目 npm run test # 运行测试 npm run lint # 代码检查 npm run format # 代码格式化 # Docker相关 npm run start # 启动Docker开发环境 npm run stop # 停止Docker服务 npm run docker:logs # 查看Docker日志 npm run docker:build # 构建Docker镜像 # 部署相关 npm run deploy:staging # 部署到测试环境 npm run deploy:prod # 部署到生产环境 # 工具脚本 npm run setup # 完整环境设置 npm run clean # 清理项目 npm run health # 健康检查 ``` ### 开发流程 1. **创建功能分支** ```bash git checkout -b feature/your-feature-name ``` 2. **开发功能** ```bash # 启动开发环境 npm run dev # 运行测试 npm run test # 代码检查 npm run lint ``` 3. **提交代码** ```bash git add . git commit -m "feat: add new feature" git push origin feature/your-feature-name ``` ### API文档 启动开发服务器后,可以访问: - API文档: http://localhost:3000/docs - 健康检查: http://localhost:3000/health - 系统监控: http://localhost:3000/metrics ## 🔧 配置说明 ### 环境变量 主要环境变量说明: ```bash # 基础配置 NODE_ENV=development # 运行环境 PORT=3000 # API服务器端口 SIGNALING_PORT=3001 # 信令服务器端口 # Redis配置 REDIS_HOST=localhost # Redis主机 REDIS_PORT=6379 # Redis端口 REDIS_PASSWORD= # Redis密码 # TURN服务器配置 TURN_SERVER_URL=turn:localhost:3478 # TURN服务器地址 TURN_USERNAME=turnserver # TURN用户名 TURN_CREDENTIAL=turnserver # TURN密码 # 前端配置 VITE_API_URL=http://localhost:3000 # API地址 VITE_SIGNALING_URL=ws://localhost:3001 # 信令地址 ``` ### Docker配置 - **开发环境**: `docker-compose.dev.yml` - **生产环境**: `docker-compose.prod.yml` - **基础设施**: `docker-compose.yml` ## 🧪 测试 ```bash # 运行所有测试 npm run test # 运行特定模块测试 npm run test:server npm run test:client npm run test:shared # 生成覆盖率报告 npm run test:coverage # 监视模式 npm run test:watch ``` ## 📊 性能指标 - **连接延迟**: < 200ms - **视频质量**: 自适应 360p-1080p - **并发用户**: 支持100+同时在线 - **房间容量**: 每房间最多10人 - **内存占用**: < 2GB (完整环境) ## 🔒 安全考虑 - TURN服务器认证 - WebSocket连接验证 - 请求频率限制 - CORS跨域保护 - 环境变量加密 ## 🤝 贡献指南 1. Fork项目 2. 创建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启Pull Request ## 📝 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情 ## 🙏 致谢 - [WebRTC](https://webrtc.org/) - 实时通信技术 - [Socket.IO](https://socket.io/) - WebSocket库 - [React](https://reactjs.org/) - 前端框架 - [Express](https://expressjs.com/) - 后端框架 - [Redis](https://redis.io/) - 内存数据库 - [coturn](https://github.com/coturn/coturn) - TURN服务器 ## 📞 联系我们 - 项目主页: https://github.com/easy-render/easy-render - 问题反馈: https://github.com/easy-render/easy-render/issues - 邮箱: team@easy-render.dev --- ⭐ 如果这个项目对你有帮助,请给我们一个星标!