[ PROMPT_NODE_24260 ]
Realtime Sfu 配置说明
[ SKILL_DOCUMENTATION ]
# 配置与部署
## 仪表板设置
1. 导航至 https://dash.cloudflare.com/?to=/:account/calls
2. 点击 "Create Application"(或使用现有应用)
3. 从仪表板复制 `CALLS_APP_ID`
4. 生成并复制 `CALLS_APP_SECRET`(视为敏感凭据)
5. 在 Wrangler 配置或下方的环境变量中使用凭据
## 依赖
**后端 (Workers):** 内置 fetch API,无需额外包
**客户端 (PartyTracks):**
bash
npm install partytracks @cloudflare/calls
**客户端 (React + PartyTracks):**
bash
npm install partytracks @cloudflare/calls observable-hooks
# Observable hooks: useObservableAsValue, useValueAsObservable
**客户端 (Raw API):** 仅原生浏览器 WebRTC API
## Wrangler 设置
c
{
"name": "my-calls-app",
"main": "src/index.ts",
"compatibility_date": "2025-01-01", // 新项目请使用当前日期
"vars": {
"CALLS_APP_ID": "your-app-id",
"MAX_WEBCAM_BITRATE": "1200000",
"MAX_WEBCAM_FRAMERATE": "24",
"MAX_WEBCAM_QUALITY_LEVEL": "1080"
},
// 设置密钥: wrangler secret put CALLS_APP_SECRET
"durable_objects": {
"bindings": [
{
"name": "ROOM",
"class_name": "Room"
}
]
}
}
## 部署
bash
wrangler login
wrangler secret put CALLS_APP_SECRET
wrangler deploy
## 环境变量
**必需:**
- `CALLS_APP_ID`: 来自仪表板
- `CALLS_APP_SECRET`: 来自仪表板 (密钥)
**可选:**
- `MAX_WEBCAM_BITRATE` (默认: 1200000)
- `MAX_WEBCAM_FRAMERATE` (默认: 24)
- `MAX_WEBCAM_QUALITY_LEVEL` (默认: 1080)
- `TURN_SERVICE_ID`: TURN 服务
- `TURN_SERVICE_TOKEN`: TURN 认证 (密钥)
## TURN 配置
javascript
const pc = new RTCPeerConnection({
iceServers: [
{ urls: 'stun:stun.cloudflare.com:3478' },
{
urls: [
'turn:turn.cloudflare.com:3478?transport=udp',
'turn:turn.cloudflare.com:3478?transport=tcp',
'turns:turn.cloudflare.com:5349?transport=tcp'
],
username: turnUsername,
credential: turnCredential
}
],
bundlePolicy: 'max-bundle', // 推荐:减少开销
iceTransportPolicy: 'all' // 使用 'relay' 强制使用 TURN (仅用于测试)
});
**端口:** 3478 (UDP/TCP), 53 (UDP), 80 (TCP), 443 (TLS), 5349 (TLS)
**何时使用 TURN:** 对于阻止 UDP 的限制性企业防火墙/网络是必需的。约 5-10% 的连接会回退到 TURN。STUN 适用于大多数用户。
**ICE 候选者过滤:** Cloudflare 处理