Ai_GirlFriend/xuniYou/网络连接问题解决.md

260 lines
5.5 KiB
Markdown
Raw Permalink Normal View History

2026-03-02 18:57:11 +08:00
# 网络连接问题解决方案
## 🔴 当前问题
```
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. **使用真机测试**
- 模拟器网络配置复杂
- 真机测试更准确