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