RTCPeerConnection:createAnswer() 方法

createAnswer()RTCPeerConnection 接口的方法,用于在 WebRTC 连接的提议/应答协商过程中,针对从远程对等端收到的提议创建 SDP 应答。

应答包含有关已附加到会话的任何媒体、浏览器支持的编解码器和选项以及已收集的任何 ICE 候选的信息。应答将传递到返回的 Promise,然后应将其发送到提议的来源以继续协商过程。

语法

js
createAnswer()
createAnswer(options)

createAnswer(successCallback, failureCallback) // deprecated
createAnswer(successCallback, failureCallback, options) // deprecated

参数

options 可选

一个可选的对象,提供对应答请求的选项。目前,没有可用的选项。

已弃用的参数

在较旧的代码和文档中,您可能会看到此函数的基于回调的版本。此版本已弃用,并且**强烈**建议不要使用。您应该更新任何现有代码以改用基于 PromisecreateAnswer() 版本。为了帮助更新现有代码,下面描述了旧版 createAnswer() 的参数。

successCallback 已弃用

一个 回调函数,它将传递一个描述新创建应答的 RTCSessionDescription 对象。

failureCallback 已弃用

一个 回调函数,它将传递一个解释创建应答请求失败原因的 DOMException 对象。

options 可选

一个可选的对象,提供对应答请求的选项。

异常

NotReadableError

身份提供程序无法提供身份断言。

OperationError

由于某种原因,SDP 生成失败;这是一个通用的失败捕获异常。

返回值

一个 Promise,其 fulfilled 处理程序将使用符合 RTCSessionDescriptionInit 字典的对象调用,该字典包含要传递给其他对等端的 SDP 应答。

示例

这是一段代码片段,摘自与文章 信令与视频通话 相关的代码。此代码来自处理发送到信令通道以将提议传递给其他对等端的邮件的处理程序。

注意:请记住,这是信令过程的一部分,其传输层是完全由您决定的实现细节。在本例中,使用 WebSocket 连接向其他对等端发送具有 type 字段(值为“video-answer”)的 JSON 消息,并将应答传递到发送连接提议的设备。传递到 sendToServer() 函数的对象的内容以及 promise fulfilled 处理程序中的所有其他内容完全取决于您的设计。

js
pc.createAnswer()
  .then((answer) => pc.setLocalDescription(answer))
  .then(() => {
    // Send the answer to the remote peer through the signaling server.
  })
  .catch(handleGetUserMediaError);

这要求 RTCPeerConnection 创建并返回一个新的应答。在我们的 promise 处理程序中,返回的应答通过调用 setLocalDescription() 设置为连接本地端的描述。

成功后,应答将使用您认为合适的任何协议发送到信令服务器。

Promise.catch() 用于捕获和处理错误。

请参阅 WebRTC 聊天示例中的 处理邀请 以查看此代码段派生的完整代码;这将帮助您了解信令过程以及应答的工作原理。

规范

规范
WebRTC:浏览器中的实时通信
# dom-rtcpeerconnection-createanswer

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。