# 🚨 连接失败 - 深度诊断

## 问题症状
- Web UI 可以访问（8899端口正常）
- WebSocket 连接失败

## 可能原因

### 1. macOS 防火墙阻止 WebSocket
```bash
# 检查防火墙状态
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate

# 临时关闭（测试用）
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off
```

### 2. WebRTC UDP 端口未开放
LiveKit WebRTC 使用 7882-7892 UDP 端口
```bash
# 检查端口
lsof -i :7882 -i :7883 -i :7884 | grep LISTEN
```

### 3. Token 无效或过期
```bash
# 重新生成
source ~/s2s-env/bin/activate
python3 gen_token.py voice-ai-meeting phone-user
```

### 4. 浏览器安全限制
- Safari/Chrome 要求 HTTPS/WSS
- 测试建议：使用 Chrome 或 Safari 的"开发者模式"

## 解决方案

### 方案 A: 关闭防火墙测试
```bash
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off
```

### 方案 B: 添加防火墙例外
1. 系统设置 → 网络 → 防火墙 → 选项
2. 添加 Python 到允许列表

### 方案 C: 使用 ngrok 暴露（推荐）
```bash
# 安装 ngrok
brew install ngrok

# 启动隧道
ngrok http 8899
```
然后使用 ngrok 提供的 https 地址

### 方案 D: 直接测试 WebSocket
```bash
curl -i -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Sec-WebSocket-Version: 13" -H "Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==" http://192.168.31.229:7880
```

## 快速检查清单

- [ ] 手机和 Mac 同一 WiFi
- [ ] 防火墙已关闭或添加例外
- [ ] Token 是最新的
- [ ] Agent Worker 正在运行
- [ ] LiveKit Docker 容器运行中
