# 示例文档

本目录包含 JRSoft Subway 协议的各种使用示例和代码片段。

## 📚 文档列表

### [命令示例](./command-examples.md)
各种命令类型的完整示例：
- Simple 命令示例
- Batch 命令示例
- Complex 命令示例
- 强类型命令示例

### [流程示例](./flow-examples.md)
完整的业务流程示例：
- 设备控制流程
- 批量操作流程
- 健康检查流程
- 节目上传流程

### [代码片段](./code-snippets.md)
常用的代码片段：
- 连接管理
- 错误处理
- 消息验证
- 性能优化

## 🚀 快速查找

### 按功能分类

#### 设备控制
- [LED 开关控制](#led-控制)
- [亮度调节](#亮度调节)
- [颜色设置](#颜色设置)
- [播放控制](#播放控制)

#### 批量操作
- [批量设置颜色](#批量颜色设置)
- [批量开关控制](#批量开关)
- [批量状态查询](#批量查询)

#### 系统管理
- [健康检查](#健康检查)
- [配置更新](#配置更新)
- [日志收集](#日志收集)

## 💡 使用提示

1. **复制粘贴友好** - 所有示例都可以直接复制使用
2. **完整可运行** - 每个示例都包含必要的导入和配置
3. **注释详细** - 关键代码都有详细注释
4. **错误处理** - 包含错误处理的最佳实践

## 📋 示例模板

### TypeScript/JavaScript

```typescript
// 导入必要的模块
import { 
  createLedSwitchCommand,
  GatewayClient,
  Priority 
} from '@jrsoft/subway-protocol';

// 创建客户端
const client = new GatewayClient('ws://localhost:18081', 'backend-001');

// 连接并发送命令
async function example() {
  try {
    await client.connect();
    
    const command = createLedSwitchCommand(
      'req-001',
      'td-01',
      1,
      'ON',
      'write'
    );
    
    const response = await client.sendCommand(command);
    console.log('Response:', response);
    
  } catch (error) {
    console.error('Error:', error);
  }
}
```

### Python

```python
import asyncio
import websockets
from datetime import datetime

async def send_command():
    async with websockets.connect('ws://localhost:18081') as websocket:
        # 注册
        await websocket.send(json.dumps({
            "type": "REGISTER",
            "clientId": "backend-001",
            "clientType": "BACKEND",
            "timestamp": datetime.utcnow().isoformat() + "Z",
            "version": "1.0"
        }))
        
        # 发送命令
        command = {
            "type": "COMMAND",
            "requestRef": "cmd-001",
            "targetClientId": "td-01",
            "command": {
                "commandType": "SIMPLE",
                "commandCode": "LedSwitch",
                "deviceType": "pillar",
                "deviceId": 1,
                "operationType": "WRITE",
                "parameters": {"switch": "ON"}
            },
            "priority": "NORMAL",
            "timeout": 5000,
            "timestamp": datetime.utcnow().isoformat() + "Z",
            "version": "1.0"
        }
        
        await websocket.send(json.dumps(command))
        
        # 接收响应
        response = await websocket.recv()
        print(f"Response: {response}")
```

## 🔗 相关资源

- [协议规范](../01-protocol/) - 了解协议细节
- [命令系统](../02-commands/) - 了解命令类型
- [API 参考](../06-reference/api.md) - 完整的 API 文档
- [示例代码仓库](../../examples/) - 完整的示例项目