参考
SDK能力与兼容性
预览版:功能和API可能会变化。
PDF由浏览器的打印对话框生成,不是托管的导出服务。
并列对比JavaScript SDK和ESP32 SDK。每个SDK的支持情况单独说明,一个SDK支持某项能力,并不代表另一个也支持。每个操作都由服务端决定,因此客户端具备某项能力并不等于拥有相应权限。
支持矩阵#
| 能力 | JavaScript | ESP32 |
|---|---|---|
| 语音任务(WSS、ACK、重放、恢复) | Supported (browser, Node) | Supported |
| RTC音频 | Publish, subscribe, mute, playback (browser) | RTC audio owner |
| 数据包 | Send and receive | Send only |
| 数据流 | Send and receive | Receive only |
| RPC | Call and handle | Callee only (answers 1–4 app.* methods, replies to the original caller only); no caller |
| DataTrack | Supported (livekit-client 2.22.3) | ESP32暂不支持 |
| Agent | Explicit Agent executions and read-only Agent state | Explicit Agent Control (create, get, stop) |
| 状态、设备、错误和释放 | Session state, quality, microphone selection, OneSay errors, close | Binding and media status, OneSay error codes, close |
| 所选模式的媒体加密 | Conditional: where the browser can run the packaged worker | Unsupported: any selected value is refused before any request |
支持情况:支持;部分支持表示只支持一个方向或一种角色;视环境而定表示取决于客户端环境;不支持表示会以明确的错误拒绝,且从不改用其他传输方式。各SDK的详情:JavaScript SDK、ESP32 SDK。
不支持和不公开的内容#
- JavaScript未完全支持:所选模式的媒体加密(视环境而定)。
- JavaScript不公开:native room, track and participant objects;native token or connection material;native SDK types;an escape hatch to the native SDK。
- ESP32未完全支持:数据包(部分支持);数据流(部分支持);RPC(部分支持);DataTrack(不支持);所选模式的媒体加密(不支持)。
- ESP32不公开:native room or track handles;native token or connection material;the upstream ESP32 runtime API。
RTC生命周期#
- 连接信息由Control API签发,有效期最长60秒。SDK从不保存连接信息,返回给你的是OneSay会话,而不是底层的房间或Token。
- 撤销请求的状态为
revoking,只有撤销生效后才变为revoked。已关闭的连接不会重新打开。 - JavaScript会话状态:
connected,reconnecting,closed。重新连接会清除接收处理函数;SDK只按原来的版本和键恢复订阅。 - 媒体加密模式:
none,e2ee(默认为none)。无法使用所选模式的客户端会以明确的错误被拒绝,从不降级。
任务恢复#
- JavaScript:最多重连5次,采用有上限的指数退避和随机抖动;身份验证或权限失败后不再重试;恢复被拒绝时以
fail结束。 - ESP32:最多尝试5次,带随机抖动,每次尝试使用一次性票据;身份验证失败、凭据已撤销或恢复被拒绝后不再重试。
- 两者相同:连续的ACK会释放音频,只重放未确认的音频;溢出时返回明确的
client_buffer_overflow,从不静默丢弃。
限制与隐私#
- 音频:16000 Hz单声道
pcm_s16le。JavaScript的一条消息最多携带4096个采样;ESP32默认最多重放3000 ms(96000字节)。 - 语音任务的音频由你的应用提供;两个SDK都不会为此打开麦克风。
- ESP32的诊断信息从不包含
wifi_ssid,raw_mac_address,raw_ip,raw_audio,transcript,credential,realtime_ticket。 - RTC连接信息属于敏感信息,以
no-store方式返回;SDK从不保存它。
查看原始Markdown
# SDK能力与兼容性 并列对比JavaScript SDK和ESP32 SDK。每个SDK的支持情况单独说明,一个SDK支持某项能力,并不代表另一个也支持。每个操作都由服务端决定,因此客户端具备某项能力并不等于拥有相应权限。 ## 支持矩阵 | 能力 | JavaScript | ESP32 | |---|---|---| | 语音任务(WSS、ACK、重放、恢复) | Supported (browser, Node) | Supported | | RTC音频 | Publish, subscribe, mute, playback (browser) | RTC audio owner | | 数据包 | Send and receive | Send only | | 数据流 | Send and receive | Receive only | | RPC | Call and handle | Callee only (answers 1–4 `app.*` methods, replies to the original caller only); no caller | | DataTrack | Supported (`livekit-client` 2.22.3) | ESP32暂不支持 | | Agent | Explicit Agent executions and read-only Agent state | Explicit Agent Control (create, get, stop) | | 状态、设备、错误和释放 | Session state, quality, microphone selection, OneSay errors, close | Binding and media status, OneSay error codes, close | | 所选模式的媒体加密 | Conditional: where the browser can run the packaged worker | Unsupported: any selected value is refused before any request | 支持情况:支持;部分支持表示只支持一个方向或一种角色;视环境而定表示取决于客户端环境;不支持表示会以明确的错误拒绝,且从不改用其他传输方式。各SDK的详情:[JavaScript SDK](javascript-sdk-draft.md)、[ESP32 SDK](esp32-sdk.md)。 ## 不支持和不公开的内容 - JavaScript未完全支持:所选模式的媒体加密(视环境而定)。 - JavaScript不公开:native room, track and participant objects;native token or connection material;native SDK types;an escape hatch to the native SDK。 - ESP32未完全支持:数据包(部分支持);数据流(部分支持);RPC(部分支持);DataTrack(不支持);所选模式的媒体加密(不支持)。 - ESP32不公开:native room or track handles;native token or connection material;the upstream ESP32 runtime API。 ## RTC生命周期 - 连接信息由Control API签发,有效期最长60秒。SDK从不保存连接信息,返回给你的是OneSay会话,而不是底层的房间或Token。 - 撤销请求的状态为`revoking`,只有撤销生效后才变为`revoked`。已关闭的连接不会重新打开。 - JavaScript会话状态:`connected`, `reconnecting`, `closed`。重新连接会清除接收处理函数;SDK只按原来的版本和键恢复订阅。 - 媒体加密模式:`none`, `e2ee`(默认为`none`)。无法使用所选模式的客户端会以明确的错误被拒绝,从不降级。 ## 任务恢复 - JavaScript:最多重连5次,采用有上限的指数退避和随机抖动;身份验证或权限失败后不再重试;恢复被拒绝时以`fail`结束。 - ESP32:最多尝试5次,带随机抖动,每次尝试使用一次性票据;身份验证失败、凭据已撤销或恢复被拒绝后不再重试。 - 两者相同:连续的ACK会释放音频,只重放未确认的音频;溢出时返回明确的`client_buffer_overflow`,从不静默丢弃。 ## 限制与隐私 - 音频:16000 Hz单声道`pcm_s16le`。JavaScript的一条消息最多携带4096个采样;ESP32默认最多重放3000 ms(96000字节)。 - 语音任务的音频由你的应用提供;两个SDK都不会为此打开麦克风。 - ESP32的诊断信息从不包含`wifi_ssid`, `raw_mac_address`, `raw_ip`, `raw_audio`, `transcript`, `credential`, `realtime_ticket`。 - RTC连接信息属于敏感信息,以`no-store`方式返回;SDK从不保存它。