4.1.11. setLocalDescription
4.1.11. setLocalDescription
setLocalDescription 方法指示 PeerConnection 将提供的会话描述应用为其本地配置。type 字段指示描述应该作为 offer, 临时 answer, 最终 answer 还是回滚进行处理; offer 和 answer 使用每个 SDP 行存在的各种规则进行不同的检查。
此 API 会更改本地媒体状态; 除其他事项外, 它会设置用于接收和解码媒体的本地资源。为了成功处理应用程序想要提供从一种媒体格式更改为不同的, 不兼容格式的场景, PeerConnection 必须能够同时支持使用当前和待处理的本地描述(例如, 支持任一描述中存在的编解码器)。这种双重处理在 PeerConnection 进入 "have-local-offer" 状态时开始, 并且它会继续, 直到使用以下任一项调用 setRemoteDescription: (1) 最终 answer, 此时 PeerConnection 可以完全采用待处理的本地描述, 或 (2) 回滚, 这会导致恢复到当前本地描述。
此 API 间接控制候选者收集过程。当提供本地描述并且当前使用的传输数量与本地描述所需的传输数量不匹配时, PeerConnection 将根据需要创建传输, 并开始为每个传输收集候选者, 如果可用, 则使用候选者池中的候选者。
如果 (1) 之前使用 offer 调用了 setRemoteDescription, (2) 使用 answer(临时或最终)调用 setLocalDescription, (3) 媒体方向兼容, 以及 (4) 有可发送的媒体, 这将导致开始媒体传输。