216 lines
5.0 KiB
Markdown
216 lines
5.0 KiB
Markdown
# 游戏方块容器 - 优化版本
|
||
|
||
## 🚀 项目概述
|
||
|
||
这是一个基于Vue 3和WebSocket的实时游戏监控系统,用于显示4个游戏方块的连接状态和动态圆点。
|
||
|
||
## ✨ 优化内容
|
||
|
||
### 1. **性能优化**
|
||
- ✅ **WebSocket连接管理优化**:使用连接池和自动重连机制
|
||
- ✅ **DOM操作优化**:使用Vue响应式数据替代直接DOM操作
|
||
- ✅ **内存管理**:限制圆点数量,防止内存泄漏
|
||
- ✅ **动画性能**:使用CSS3硬件加速和will-change属性
|
||
|
||
### 2. **代码结构优化**
|
||
- ✅ **组件化设计**:将方块组件化,提高代码复用性
|
||
- ✅ **服务类分离**:WebSocket逻辑独立到服务类
|
||
- ✅ **配置管理**:统一的配置文件管理
|
||
- ✅ **工具类**:通用工具函数和日志系统
|
||
|
||
### 3. **用户体验优化**
|
||
- ✅ **响应式设计**:支持不同屏幕尺寸
|
||
- ✅ **加载状态**:连接状态指示器和加载动画
|
||
- ✅ **键盘快捷键**:快速操作功能
|
||
- ✅ **状态栏**:实时显示连接状态和统计信息
|
||
|
||
### 4. **错误处理增强**
|
||
- ✅ **完善的错误处理**:WebSocket连接错误处理
|
||
- ✅ **自动重连机制**:指数退避算法
|
||
- ✅ **日志系统**:分级日志记录
|
||
- ✅ **性能监控**:性能测量和分析
|
||
|
||
### 5. **安全性优化**
|
||
- ✅ **输入验证**:坐标范围验证
|
||
- ✅ **连接验证**:WebSocket连接状态检查
|
||
- ✅ **错误边界**:防止应用崩溃
|
||
|
||
## 🛠️ 技术栈
|
||
|
||
- **前端框架**:Vue 3
|
||
- **通信协议**:WebSocket
|
||
- **样式**:CSS3 + 响应式设计
|
||
- **协议缓冲**:Protobuf.js
|
||
- **工具库**:自定义工具类
|
||
|
||
## 📁 项目结构
|
||
|
||
```
|
||
web/
|
||
├── index.html # 主页面
|
||
├── game.js # 主应用逻辑
|
||
├── config.js # 配置文件
|
||
├── utils.js # 工具类
|
||
├── style.css # 样式文件
|
||
├── proto/ # 协议文件
|
||
│ ├── action.proto # 动作协议
|
||
│ └── define.proto # 定义协议
|
||
└── README.md # 项目说明
|
||
```
|
||
|
||
## 🚀 快速开始
|
||
|
||
### 1. 启动项目
|
||
```bash
|
||
# 使用任何HTTP服务器启动项目
|
||
python -m http.server 8000
|
||
# 或
|
||
npx serve .
|
||
```
|
||
|
||
### 2. 访问应用
|
||
打开浏览器访问 `http://localhost:8000`
|
||
|
||
## ⌨️ 键盘快捷键
|
||
|
||
| 快捷键 | 功能 |
|
||
|--------|------|
|
||
| `H` | 隐藏/显示状态栏 |
|
||
| `C` | 清除所有圆点 |
|
||
| `R` | 重新连接所有WebSocket |
|
||
|
||
## ⚙️ 配置说明
|
||
|
||
### WebSocket配置
|
||
```javascript
|
||
websocket: {
|
||
baseUrl: 'ws://localhost:8501', // WebSocket服务器地址
|
||
reconnectAttempts: 5, // 重连次数
|
||
reconnectDelay: 1000, // 重连延迟
|
||
heartbeatInterval: 30000, // 心跳间隔
|
||
connectionTimeout: 10000 // 连接超时
|
||
}
|
||
```
|
||
|
||
### 游戏配置
|
||
```javascript
|
||
game: {
|
||
maxDotsPerSquare: 100, // 每个方块最大圆点数
|
||
dotLifetime: 30000, // 圆点生命周期
|
||
gridSize: { width: 400, height: 400 }, // 网格大小
|
||
animationDuration: 300 // 动画持续时间
|
||
}
|
||
```
|
||
|
||
## 🔧 自定义配置
|
||
|
||
### 修改WebSocket服务器地址
|
||
在 `config.js` 中修改 `websocket.baseUrl`:
|
||
|
||
```javascript
|
||
websocket: {
|
||
baseUrl: 'ws://your-server:port',
|
||
// ... 其他配置
|
||
}
|
||
```
|
||
|
||
### 调整性能参数
|
||
```javascript
|
||
performance: {
|
||
enableAnimations: true, // 启用动画
|
||
enableHoverEffects: true, // 启用悬停效果
|
||
enableBackdropFilter: true, // 启用背景模糊
|
||
maxFPS: 60 // 最大帧率
|
||
}
|
||
```
|
||
|
||
## 📊 性能特性
|
||
|
||
### 1. **响应式布局**
|
||
- 桌面端:2x2网格布局
|
||
- 平板端:2x2自适应布局
|
||
- 移动端:1x4垂直布局
|
||
|
||
### 2. **动画优化**
|
||
- CSS3硬件加速
|
||
- 帧率控制
|
||
- 动画性能监控
|
||
|
||
### 3. **内存管理**
|
||
- 圆点数量限制
|
||
- 自动清理机制
|
||
- 内存泄漏防护
|
||
|
||
## 🐛 调试功能
|
||
|
||
### 日志系统
|
||
```javascript
|
||
// 在浏览器控制台查看详细日志
|
||
utils.debug('调试信息');
|
||
utils.info('一般信息');
|
||
utils.warn('警告信息');
|
||
utils.error('错误信息');
|
||
```
|
||
|
||
### 性能监控
|
||
```javascript
|
||
// 测量函数执行时间
|
||
const { result, duration } = utils.measurePerformance('函数名', () => {
|
||
// 要测量的代码
|
||
});
|
||
```
|
||
|
||
## 🔒 安全特性
|
||
|
||
### 1. **输入验证**
|
||
- 坐标范围检查
|
||
- 数据类型验证
|
||
- 恶意数据过滤
|
||
|
||
### 2. **连接安全**
|
||
- WebSocket状态验证
|
||
- 连接超时处理
|
||
- 错误恢复机制
|
||
|
||
## 📱 移动端支持
|
||
|
||
- 响应式设计
|
||
- 触摸友好的界面
|
||
- 性能优化
|
||
- 电池友好的动画
|
||
|
||
## 🎨 主题定制
|
||
|
||
### 颜色方案
|
||
可以通过修改CSS变量来自定义主题:
|
||
|
||
```css
|
||
:root {
|
||
--primary-color: #ff6b6b;
|
||
--secondary-color: #4ecdc4;
|
||
--background-color: #f5f5f5;
|
||
--border-color: #555;
|
||
}
|
||
```
|
||
|
||
## 🤝 贡献指南
|
||
|
||
1. Fork 项目
|
||
2. 创建功能分支
|
||
3. 提交更改
|
||
4. 推送到分支
|
||
5. 创建 Pull Request
|
||
|
||
## 📄 许可证
|
||
|
||
MIT License
|
||
|
||
## 📞 支持
|
||
|
||
如有问题或建议,请提交 Issue 或联系开发团队。
|
||
|
||
---
|
||
|
||
**版本**: 2.0.0
|
||
**最后更新**: 2024年
|
||
**维护者**: 游戏开发团队 |