参考

SDK能力与兼容性

预览版:功能和API可能会变化。

PDF由浏览器的打印对话框生成,不是托管的导出服务。

并列对比JavaScript SDK和ESP32 SDK。每个SDK的支持情况单独说明,一个SDK支持某项能力,并不代表另一个也支持。每个操作都由服务端决定,因此客户端具备某项能力并不等于拥有相应权限。

支持矩阵#

能力JavaScriptESP32
语音任务(WSS、ACK、重放、恢复)Supported (browser, Node)Supported
RTC音频Publish, subscribe, mute, playback (browser)RTC audio owner
数据包Send and receiveSend only
数据流Send and receiveReceive only
RPCCall and handleCallee only (answers 1–4 app.* methods, replies to the original caller only); no caller
DataTrackSupported (livekit-client 2.22.3)ESP32暂不支持
AgentExplicit Agent executions and read-only Agent stateExplicit Agent Control (create, get, stop)
状态、设备、错误和释放Session state, quality, microphone selection, OneSay errors, closeBinding and media status, OneSay error codes, close
所选模式的媒体加密Conditional: where the browser can run the packaged workerUnsupported: 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从不保存它。