2.5 KiB
2.5 KiB
Core 重构 Phase 2 进度报告
✅ 已完成
1. connect/stun.go 重构完成
修改内容:
- ❌ 删除重复的
STUNClient结构体(约 100 行代码) - ❌ 删除
queryServer()等底层 STUN 协议实现 - ✅ 改为调用
client/stun_client.go的GetExternalIP()方法
重构对比:
// 修改前: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
重构方案:
// 修改前: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 | - |
🎯 下一步行动
-
立即执行: 重构
connect/turn_udp.go- 删除 TURNClient 完整实现
- 简化为调用 client/turn_client.go
- 只保留 TURNFactory.Dial() 逻辑
-
验证编译:
go build ./core/connect go build ./core -
更新文档:
- 在 README 中说明新的目录结构
- 更新 core 分层架构文档
创建时间:2026-03-24 00:45
Phase 2 进度:1/3 完成