4.1.10. SessionDescriptionType
4.1.10. SessionDescriptionType
会话描述对象(RTCSessionDescription)可以是 "offer", "pranswer", "answer" 或 "rollback" 类型。这些类型提供了关于应该如何解析描述参数以及应该如何更改媒体状态的信息。
"offer" 表示描述必须被解析为 offer; 该描述可能包括许多可能的媒体配置。用作 "offer" 的描述可以在 PeerConnection 处于 "stable" 状态时随时应用, 或者作为对先前提供但未应答的 "offer" 的更新应用。
"pranswer" 表示描述必须被解析为 answer, 但不是最终 answer, 因此不得导致释放已分配的资源。如果 answer 未指定非活动媒体方向, 则可能导致媒体传输开始。用作 "pranswer" 的描述可以作为对 "offer" 的响应应用, 或者作为对先前发送的 "pranswer" 的更新应用。
"answer" 表示描述必须被解析为 answer, offer/answer 交换必须被视为完成, 并且应该释放任何不再需要的资源(解码器, 候选者)。用作 "answer" 的描述可以作为对 "offer" 的响应应用, 或者作为对先前发送的 "pranswer" 的更新应用。
临时 answer 和最终 answer 之间的唯一区别是最终 answer 会导致释放由于 offer 而分配的任何未使用资源。因此, 应用程序可以在 answer 应该作为临时还是最终应用上使用一些判断, 并且可以根据需要更改会话描述的类型。例如, 在串行分叉场景中, 应用程序可能会从每个远程端点接收多个 "最终" answer。应用程序可以选择接受初始 answer 作为临时 answer, 并且仅在接收到符合其标准的 answer 时才将 answer 应用为最终(例如, 真人用户而不是语音邮件)。
"rollback" 是一种特殊的会话描述类型, 表示状态机必须回滚到先前的 "stable" 状态, 如第 4.1.10.2 节所述。内容必须为空。