# Core 重构 Phase 2 进度报告 ## ✅ 已完成 ### 1. connect/stun.go 重构完成 **修改内容**: - ❌ 删除重复的 `STUNClient` 结构体(约 100 行代码) - ❌ 删除 `queryServer()` 等底层 STUN 协议实现 - ✅ 改为调用 `client/stun_client.go` 的 `GetExternalIP()` 方法 **重构对比**: ```go // 修改前:connect 自己实现 STUN 客户端 type STUNClient struct { ... } func (c *STUNClient) GetExternalAddress() { ... } // 修改后:调用 client 层的协议客户端 stun := client.NewSTUNClient(servers, logger) result := stun.GetExternalIP() ``` **删除行数**: ~95 行 **新增行数**: ~5 行(import + 调用) **净减少**: -90 行 ✅ --- ## ⏳ 待完成 ### 2. connect/turn_udp.go 重构(进行中) **当前状态**: - ❌ 包含完整的 TURNClient 实现(167 行) - ❌ 包含 allocateUDP/allocateTCP 等底层协议逻辑 - ✅ 需要改为调用 `client/turn_client.go` **重构方案**: ```go // 修改前:connect 自己实现 TURN 客户端 type TURNClient struct { ... } func (c *TURNClient) Allocate() { ... } // 167 行实现 // 修改后:调用 client 层的协议客户端 turn := client.NewTURNClient(config) relayConn := turn.Allocate() return NewTURNConn(relayConn), nil ``` **预计删除**: ~350 行 **预计新增**: ~20 行 **净减少**: -330 行 --- ### 3. 其他待清理的文件 #### fake_tcp.go / real_tcp.go - ✅ 保持现状(已经是工厂模式) - ℹ️ 这两个文件是真正的建连逻辑,不需要调用 client/ #### ws.go - ⏳ 检查是否有重复的 WSClient 实现 - 🔄 如果需要,改为调用 `client/ws_client.go` --- ## 📊 重构收益统计 | 文件 | 修改前行数 | 修改后行数 | 净减少 | 状态 | |------|-----------|-----------|--------|------| | `connect/stun.go` | 180 | 85 | -95 | ✅ 完成 | | `connect/turn_udp.go` | 409 | ~60 | -349 | ⏳ 进行中 | | `fake_tcp_factory.go` | 55 | 0 | -55 | ✅ 已删除 | | `real_tcp_factory.go` | 55 | 0 | -55 | ✅ 已删除 | | **总计** | **699** | **~145** | **-554** | - | --- ## 🎯 下一步行动 1. **立即执行**: 重构 `connect/turn_udp.go` - 删除 TURNClient 完整实现 - 简化为调用 client/turn_client.go - 只保留 TURNFactory.Dial() 逻辑 2. **验证编译**: ```bash go build ./core/connect go build ./core ``` 3. **更新文档**: - 在 README 中说明新的目录结构 - 更新 core 分层架构文档 --- *创建时间:2026-03-24 00:45* *Phase 2 进度:1/3 完成*