Ai_GirlFriend/xuniYou/网络连接问题解决.md
2026-03-02 18:57:11 +08:00

260 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 网络连接问题解决方案
## 🔴 当前问题
```
request:fail abort statusCode:-1 failed to connect to /192.168.1.141:30101
```
手机无法连接到服务器,这是网络配置问题,不是代码问题。
## ✅ 快速检查清单
### 1. 确认手机和电脑在同一个 WiFi
**电脑端:**
```cmd
ipconfig
```
查找 `无线局域网适配器 WLAN` 的 IPv4 地址,例如:
```
IPv4 地址 . . . . . . . . . . . . : 192.168.1.141
```
**手机端:**
- 打开 WiFi 设置
- 点击已连接的 WiFi
- 查看 IP 地址(应该是 192.168.1.x
❌ 如果手机 IP 不是 192.168.1.x说明不在同一个网络
### 2. 测试服务器是否可访问
**在手机浏览器中访问:**
```
http://192.168.1.141:30101/docs
```
✅ 如果能打开 API 文档页面 → 网络正常,继续下一步
❌ 如果无法打开 → 网络问题,继续排查
### 3. 检查防火墙
**方法 1添加防火墙规则推荐**
1.`Win + R`,输入 `wf.msc`,回车
2. 点击左侧"入站规则"
3. 点击右侧"新建规则"
4. 选择"端口" → 下一步
5. 选择 TCP输入 `30100,30101` → 下一步
6. 选择"允许连接" → 下一步
7. 全部勾选(域、专用、公用)→ 下一步
8. 名称输入"Python 服务器" → 完成
**方法 2临时关闭防火墙测试**
以管理员身份运行 PowerShell
```powershell
# 关闭防火墙
netsh advfirewall set allprofiles state off
# 测试完成后重新开启
netsh advfirewall set allprofiles state on
```
### 4. 检查服务器是否正在运行
确认服务器日志中有:
```
Uvicorn running on http://0.0.0.0:30101
Application startup complete.
```
✅ 如果看到这些日志 → 服务器正常运行
❌ 如果没有 → 重启服务器
### 5. 检查端口是否被占用
```cmd
netstat -ano | findstr :30101
```
应该看到:
```
TCP 0.0.0.0:30101 0.0.0.0:0 LISTENING [进程ID]
```
## 🔧 常见问题解决
### 问题 1IP 地址变了
**症状:**
- 之前能连接,现在不能了
- 电脑重启后无法连接
**解决:**
1. 在电脑上运行 `ipconfig` 查看新的 IP 地址
2. 更新 `xuniYou/utils/request.js` 中的 IP 地址:
```javascript
export const baseURL = 'http://新IP:30100'
export const baseURLPy = 'http://新IP:30101'
```
3. 重新编译 App
**或者设置静态 IP推荐**
1. 打开"控制面板" → "网络和共享中心"
2. 点击当前连接的网络
3. 点击"属性" → "Internet 协议版本 4 (TCP/IPv4)" → "属性"
4. 选择"使用下面的 IP 地址"
- IP 地址192.168.1.141
- 子网掩码255.255.255.0
- 默认网关192.168.1.1
- 首选 DNS192.168.1.1
### 问题 2手机连接的是移动数据
**症状:**
- 手机显示 4G/5G 图标
- 或者连接的是不同的 WiFi
**解决:**
1. 关闭手机移动数据
2. 连接到与电脑相同的 WiFi
3. 重新测试
### 问题 3路由器 AP 隔离
**症状:**
- 手机和电脑在同一个 WiFi
- 但是无法互相访问
**解决:**
1. 登录路由器管理页面(通常是 192.168.1.1
2. 查找"AP 隔离"或"无线隔离"设置
3. 关闭 AP 隔离功能
4. 重启路由器
### 问题 4Windows 网络配置
**症状:**
- 防火墙已关闭
- 但还是无法连接
**解决:**
检查网络配置文件类型:
1. 打开"设置" → "网络和 Internet" → "状态"
2. 点击"属性"
3. 确保网络配置文件是"专用"而不是"公用"
## 🧪 完整测试流程
### 步骤 1测试电脑本地访问
在电脑浏览器中访问:
```
http://127.0.0.1:30101/docs
```
✅ 能打开 → 服务器正常
❌ 不能打开 → 服务器问题,检查服务器日志
### 步骤 2测试局域网访问
在电脑浏览器中访问:
```
http://192.168.1.141:30101/docs
```
✅ 能打开 → 网络配置正常
❌ 不能打开 → 防火墙或网络配置问题
### 步骤 3测试手机访问
在手机浏览器中访问:
```
http://192.168.1.141:30101/docs
```
✅ 能打开 → 网络连接正常,可以测试 App
❌ 不能打开 → 手机网络问题
### 步骤 4测试 App 连接
打开 App观察日志
```
WebSocket URL: ws://192.168.1.141:30101/voice/call
WebSocket onOpen: [Object] {}
```
✅ 看到 onOpen → 连接成功
❌ 看到 fail → 还有问题
## 📝 推荐配置
### 开发环境最佳实践
1. **设置电脑静态 IP**
- 避免 IP 地址变化
- 固定为 192.168.1.141
2. **配置防火墙规则**
- 允许端口 30100 和 30101
- 不要完全关闭防火墙
3. **使用专用网络配置文件**
- 在 Windows 网络设置中选择"专用"
- 避免公用网络的限制
4. **关闭 AP 隔离**
- 在路由器设置中关闭
- 允许设备间通信
## 🚀 解决后的测试
网络连接正常后,重新测试语音通话功能:
1. 打开 App
2. 进入语音通话页面
3. 按住"按住说话"
4. 说话 3-5 秒
5. 松开按钮
观察日志:
```
✅ 开始说话
📤 发送 ptt_on 信号
📋 收到服务器消息: {"type":"info","msg":"ptt_enabled"}
⏹️ 录音已停止
📁 转换后的绝对路径: xxx
✅ 文件读取成功
📦 开始分片发送
```
## ⚠️ 注意事项
1. **不要在公共 WiFi 测试**
- 公共 WiFi 通常有 AP 隔离
- 设备间无法互相访问
2. **确保服务器一直运行**
- 不要关闭服务器窗口
- 观察服务器日志
3. **手机不要锁屏**
- 锁屏可能断开 WiFi
- 保持屏幕常亮
4. **使用真机测试**
- 模拟器网络配置复杂
- 真机测试更准确