WHIP 协议
TiRTC WHIP 基于 IETF RFC 9725。当前接入使用非 Trickle ICE 流程:设备通过一次 HTTP POST 交换完整 SDP,随后通过 WebRTC 传输媒体。
HTTP 交互
创建资源:POST <service-endpoint>
http
POST /whip HTTP/1.1
Authorization: Bearer <token>
Content-Type: application/sdp
<SDP Offer>成功响应:
http
HTTP/1.1 201 Created
Content-Type: application/sdp
Location: /resource/4f57...
<SDP Answer>Location 必须唯一标识本次会话。建议返回相对 URI,使入口代理可以保持对外域名和协议。
删除资源:DELETE <Location>
http
DELETE /resource/4f57... HTTP/1.1DELETE 不需要 Authorization。Location 中的 session-id 必须使用至少 128 位密码学随机值,不能包含设备 ID 或其他可预测信息。无论资源刚被删除还是已经不存在,均返回 204 No Content。
随机 ID 属于 Bearer 能力,不得写入普通访问日志。入口按设备能力使用 HTTP 或 HTTPS,并应限制请求速率。使用 HTTP 时,Token 和随机 ID 不受传输加密保护,只应在设备确有需要且网络路径受控时启用。即使设备未发送 DELETE,服务端也必须在 TiRTC 连接断开时清理资源。
当前支持范围
| 能力 | 支持情况 |
|---|---|
| SDP Offer/Answer over HTTP POST | 支持 |
Location 会话资源 | 支持 |
DELETE 结束会话 | 服务端应实现 |
Trickle ICE / PATCH | 暂不支持 |
| ICE、DTLS、SRTP | 由 TiRTC SDK 处理 |
HTTP 状态码
| 状态码 | 含义 |
|---|---|
201 Created | 已接受 Offer 并返回 Answer |
400 Bad Request | SDP 或请求参数无效 |
401 Unauthorized | 缺少 Bearer Token |
403 Forbidden | Token 验证失败 |
405 Method Not Allowed | 端点不支持该方法 |
415 Unsupported Media Type | Content-Type 不是 application/sdp |
500 Internal Server Error | 服务内部错误 |
WHIP Service 返回的错误正文不应包含密钥、Token、内部地址或堆栈信息。