You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
# 集成测试已知问题
## 问题1: 请求超时
### 现象
- 服务器接收到数据(日志显示"Server received")
- Handler执行了( 路由匹配成功)
- 但客户端没有收到响应( Read超时)
### 可能原因
1. **gnet AsyncWrite机制**
- AsyncWrite是异步的, 可能在OnTraffic返回后才发送数据
- 响应需要在事件循环的下一次迭代中发送
- 可能需要刷新或触发机制
2. ** 数据丢弃时机**
- 服务器在处理完数据后会丢弃输入数据( c.Discard)
- 但响应是通过AsyncWrite发送的, 不依赖于输入数据处理
- 可能需要在响应发送完成后再丢弃数据
3. ** 协议编码问题**
- 如果协议编码启用,响应可能被编码
- 客户端期望原始数据,但收到编码后的数据
- 需要确保协议编码配置正确
### 临时解决方案
1. 增加超时时间到10秒
2. 使用Send和Receive分开处理
3. 添加等待时间让服务器处理
4. 明确禁用协议编码
### 长期解决方案
1. 检查gnet的AsyncWrite机制
2. 可能需要使用同步写入或刷新机制
3. 确保响应在OnTraffic返回前发送
4. 添加响应发送完成的回调
## 问题2: Windows防火墙
### 现象
- 在Windows上运行测试时, 防火墙会弹出确认对话框
- 需要手动点击"允许访问"
### 解决方案
1. 手动允许程序通过防火墙
2. 在防火墙设置中添加例外
3. 使用管理员权限运行测试
## 调试建议
1. ** 启用详细日志**
- 设置日志级别为debug
- 查看服务器和客户端的详细日志
- 检查响应是否真的发送了
2. ** 使用网络抓包工具**
- 使用Wireshark或tcpdump抓包
- 检查网络数据包
- 确认响应是否真的发送了
3. ** 简化测试**
- 创建最简单的测试用例
- 逐步添加功能
- 定位问题所在
4. ** 检查gnet文档**
- 查看gnet v2的文档
- 了解AsyncWrite的机制
- 确认是否需要刷新或触发