Initial commit: FunConnect project with server, relay, client and admin panel
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
309
docs/LAN_TEST.md
Normal file
309
docs/LAN_TEST.md
Normal file
@@ -0,0 +1,309 @@
|
||||
# FunMC 局域网联机测试指南
|
||||
|
||||
本文档介绍如何测试 FunMC 的局域网联机功能。
|
||||
|
||||
## 测试环境准备
|
||||
|
||||
### 硬件要求
|
||||
|
||||
- 至少 2 台电脑(或使用虚拟机)
|
||||
- 所有设备在同一局域网内
|
||||
- 每台设备需安装 Minecraft Java Edition
|
||||
|
||||
### 软件要求
|
||||
|
||||
- PostgreSQL 14+
|
||||
- Rust 1.75+
|
||||
- Node.js 18+
|
||||
- Minecraft Java Edition 1.16+
|
||||
|
||||
---
|
||||
|
||||
## 测试步骤
|
||||
|
||||
### 第一步:部署本地服务器
|
||||
|
||||
在其中一台电脑上部署 FunMC 服务器:
|
||||
|
||||
```bash
|
||||
# 1. 克隆项目
|
||||
git clone https://github.com/mofangfang/funmc.git
|
||||
cd funmc
|
||||
|
||||
# 2. 启动数据库
|
||||
docker run -d --name funmc-db \
|
||||
-p 5432:5432 \
|
||||
-e POSTGRES_PASSWORD=password \
|
||||
-e POSTGRES_DB=funmc \
|
||||
postgres:14
|
||||
|
||||
# 3. 配置环境变量
|
||||
cat > server/.env << EOF
|
||||
DATABASE_URL=postgres://postgres:password@localhost/funmc
|
||||
JWT_SECRET=test-jwt-secret-for-local-development
|
||||
BIND_ADDR=0.0.0.0:3000
|
||||
QUIC_PORT=3001
|
||||
RUST_LOG=info
|
||||
EOF
|
||||
|
||||
# 4. 运行数据库迁移
|
||||
cd server
|
||||
cargo sqlx database create
|
||||
cargo sqlx migrate run
|
||||
|
||||
# 5. 启动主服务器
|
||||
cargo run
|
||||
```
|
||||
|
||||
记录服务器的局域网 IP 地址(如 `192.168.1.100`)。
|
||||
|
||||
### 第二步:配置客户端
|
||||
|
||||
在所有参与测试的电脑上:
|
||||
|
||||
1. 修改客户端配置文件 `client/src/config.rs`:
|
||||
|
||||
```rust
|
||||
pub const DEFAULT_SERVER_URL: &str = "http://192.168.1.100:3000";
|
||||
```
|
||||
|
||||
2. 编译并运行客户端:
|
||||
|
||||
```bash
|
||||
cd client/ui
|
||||
npm install
|
||||
cd ..
|
||||
cargo tauri dev
|
||||
```
|
||||
|
||||
### 第三步:测试场景
|
||||
|
||||
#### 场景 1:基本局域网联机
|
||||
|
||||
**主机操作:**
|
||||
1. 启动 Minecraft,创建单人世界
|
||||
2. 按 `Esc` → `对局域网开放`
|
||||
3. 选择游戏模式,点击「开始局域网世界」
|
||||
4. 记下显示的端口号(如 25565)
|
||||
5. 打开 FunMC 客户端
|
||||
6. 注册/登录账号
|
||||
7. 创建房间(填写房间名、游戏版本)
|
||||
8. 点击「开始托管」
|
||||
|
||||
**预期结果:**
|
||||
- FunMC 显示"托管中"状态
|
||||
- 显示 QUIC 端口号
|
||||
|
||||
**玩家操作:**
|
||||
1. 打开 FunMC 客户端
|
||||
2. 登录账号
|
||||
3. 在大厅找到主机创建的房间
|
||||
4. 点击加入房间
|
||||
5. 在房间页面点击「连接」
|
||||
6. 等待连接建立
|
||||
7. 复制显示的地址(如 `127.0.0.1:25566`)
|
||||
8. 打开 Minecraft → 多人游戏 → 添加服务器
|
||||
9. 粘贴地址并连接
|
||||
|
||||
**预期结果:**
|
||||
- FunMC 显示连接类型(P2P 直连 或 中继)
|
||||
- 能够成功进入 Minecraft 服务器
|
||||
|
||||
#### 场景 2:P2P 直连测试
|
||||
|
||||
在局域网环境下,两台电脑应该能够建立 P2P 直连。
|
||||
|
||||
**验证方法:**
|
||||
1. 连接成功后,检查 FunMC 显示的连接类型
|
||||
2. 应显示「P2P 直连」
|
||||
3. 延迟应该很低(通常 < 10ms)
|
||||
|
||||
**如果显示「中继」:**
|
||||
- 检查防火墙设置
|
||||
- 确认 UDP 端口 34000-34100 未被阻止
|
||||
- 检查路由器是否启用了 UPnP
|
||||
|
||||
#### 场景 3:房间聊天测试
|
||||
|
||||
1. 主机和玩家都进入同一房间
|
||||
2. 在房间页面的聊天框中发送消息
|
||||
3. 验证双方都能收到消息
|
||||
|
||||
**预期结果:**
|
||||
- 消息实时显示
|
||||
- 显示发送者用户名和时间
|
||||
|
||||
#### 场景 4:多玩家测试
|
||||
|
||||
1. 让 3 人以上加入同一房间
|
||||
2. 所有人都点击「连接」
|
||||
3. 所有人都进入 Minecraft 服务器
|
||||
|
||||
**预期结果:**
|
||||
- 所有玩家都能成功连接
|
||||
- 游戏内能看到所有玩家
|
||||
|
||||
#### 场景 5:断线重连测试
|
||||
|
||||
1. 建立连接并进入游戏
|
||||
2. 在 FunMC 中点击「断开连接」
|
||||
3. 重新点击「连接」
|
||||
4. 在 Minecraft 中重新连接服务器
|
||||
|
||||
**预期结果:**
|
||||
- 能够重新建立连接
|
||||
- 游戏继续正常进行
|
||||
|
||||
---
|
||||
|
||||
## 测试检查清单
|
||||
|
||||
### 服务端检查
|
||||
|
||||
| 检查项 | 预期结果 | 实际结果 |
|
||||
|--------|---------|---------|
|
||||
| 服务器启动 | 无错误日志 | |
|
||||
| 数据库连接 | 连接成功 | |
|
||||
| API 响应 | 返回 200 OK | |
|
||||
| WebSocket | 能够建立连接 | |
|
||||
|
||||
### 客户端检查
|
||||
|
||||
| 检查项 | 预期结果 | 实际结果 |
|
||||
|--------|---------|---------|
|
||||
| 注册功能 | 成功创建账号 | |
|
||||
| 登录功能 | 成功登录 | |
|
||||
| 创建房间 | 房间出现在大厅 | |
|
||||
| 加入房间 | 成功进入房间 | |
|
||||
| 开始托管 | 状态显示"托管中" | |
|
||||
| 连接功能 | 显示代理地址 | |
|
||||
| 聊天功能 | 消息实时同步 | |
|
||||
|
||||
### 网络检查
|
||||
|
||||
| 检查项 | 预期结果 | 实际结果 |
|
||||
|--------|---------|---------|
|
||||
| P2P 连接 | 局域网内成功 | |
|
||||
| 中继连接 | 作为备用可用 | |
|
||||
| 延迟 | P2P < 10ms | |
|
||||
| 数据传输 | Minecraft 流量正常 | |
|
||||
|
||||
---
|
||||
|
||||
## 常见问题排查
|
||||
|
||||
### 问题 1:无法连接到服务器
|
||||
|
||||
**症状:** 客户端显示"连接失败"
|
||||
|
||||
**排查步骤:**
|
||||
1. 确认服务器正在运行:
|
||||
```bash
|
||||
curl http://192.168.1.100:3000/api/v1/rooms
|
||||
```
|
||||
2. 检查防火墙:
|
||||
```bash
|
||||
# Windows
|
||||
netsh advfirewall firewall add rule name="FunMC" dir=in action=allow protocol=TCP localport=3000
|
||||
|
||||
# Linux
|
||||
sudo ufw allow 3000/tcp
|
||||
```
|
||||
3. 确认网络连通:
|
||||
```bash
|
||||
ping 192.168.1.100
|
||||
```
|
||||
|
||||
### 问题 2:P2P 连接失败
|
||||
|
||||
**症状:** 始终使用中继连接
|
||||
|
||||
**排查步骤:**
|
||||
1. 检查 UDP 端口:
|
||||
```bash
|
||||
# 确认端口 34000-34100 未被占用
|
||||
netstat -an | grep 34000
|
||||
```
|
||||
2. 检查 NAT 类型(对称型 NAT 无法打洞)
|
||||
3. 暂时禁用防火墙测试
|
||||
|
||||
### 问题 3:Minecraft 无法连接
|
||||
|
||||
**症状:** 在 Minecraft 中添加服务器后连接失败
|
||||
|
||||
**排查步骤:**
|
||||
1. 确认 FunMC 显示"已连接"
|
||||
2. 检查代理地址是否正确复制
|
||||
3. 确认 Minecraft 服务器正在运行
|
||||
4. 检查 Minecraft 版本兼容性
|
||||
|
||||
### 问题 4:延迟过高
|
||||
|
||||
**症状:** 游戏卡顿,延迟 > 100ms
|
||||
|
||||
**排查步骤:**
|
||||
1. 检查是否使用 P2P 直连
|
||||
2. 检查网络带宽
|
||||
3. 关闭其他占用带宽的程序
|
||||
4. 尝试使用有线网络代替 WiFi
|
||||
|
||||
---
|
||||
|
||||
## 性能测试
|
||||
|
||||
### 延迟测试
|
||||
|
||||
使用 FunMC 内置的延迟显示功能:
|
||||
|
||||
| 连接类型 | 预期延迟 |
|
||||
|---------|---------|
|
||||
| P2P (局域网) | < 5ms |
|
||||
| P2P (公网) | 10-50ms |
|
||||
| 中继 | 50-150ms |
|
||||
|
||||
### 带宽测试
|
||||
|
||||
Minecraft 典型带宽需求:
|
||||
- 单人连接:约 50-100 KB/s
|
||||
- 多人服务器:每人约 100-200 KB/s
|
||||
|
||||
---
|
||||
|
||||
## 测试报告模板
|
||||
|
||||
```
|
||||
测试日期: ____________
|
||||
测试人员: ____________
|
||||
FunMC 版本: ____________
|
||||
|
||||
测试环境:
|
||||
- 服务器 IP: ____________
|
||||
- 参与电脑数量: ____________
|
||||
- Minecraft 版本: ____________
|
||||
|
||||
测试结果:
|
||||
- 基本联机: [ ] 通过 [ ] 失败
|
||||
- P2P 直连: [ ] 通过 [ ] 失败
|
||||
- 房间聊天: [ ] 通过 [ ] 失败
|
||||
- 多玩家: [ ] 通过 [ ] 失败
|
||||
- 断线重连: [ ] 通过 [ ] 失败
|
||||
|
||||
问题记录:
|
||||
____________________________________________
|
||||
|
||||
建议改进:
|
||||
____________________________________________
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 联系支持
|
||||
|
||||
如测试中遇到问题,请通过以下方式反馈:
|
||||
|
||||
- GitHub Issues: https://github.com/mofangfang/funmc/issues
|
||||
- 邮箱: support@funmc.com
|
||||
|
||||
---
|
||||
|
||||
*魔幻方开发 © 2024*
|
||||
Reference in New Issue
Block a user