RTCPeerConnection:createAnswer() 方法
RTCPeerConnection 接口的 createAnswer() 方法在 WebRTC 连接的 offer/answer 协商过程中,用于创建对从远程端收到的 offer 的 SDP answer。
answer 包含有关会话中已附加的媒体、浏览器支持的编解码器和选项以及已收集的任何 ICE 候选的信息。answer 将传递给返回的 Promise,然后应将其发送到 offer 的源以继续协商过程。
语法
createAnswer()
createAnswer(options)
createAnswer(successCallback, failureCallback) // deprecated
createAnswer(successCallback, failureCallback, options) // deprecated
参数
options可选-
一个可选对象,提供 answer 的请求选项。目前,没有可用的选项。
已弃用的参数
在旧的代码和文档中,您可能会看到此函数的回调版本。该版本已被弃用,并且 **强烈** 不建议使用。您应该更新任何现有代码,以使用 `createAnswer()` 的 Promise 版本。为了帮助更新现有代码,下面将介绍 `createAnswer()` 旧格式的参数。
successCallback已弃用-
一个 回调函数,该函数将接收一个描述新创建的 answer 的
RTCSessionDescription对象。 failureCallback已弃用-
一个 回调函数,该函数将接收一个
DOMException对象,解释创建 answer 的请求失败的原因。 options可选-
一个可选对象,提供 answer 的请求选项。
异常
NotReadableError-
身份提供商未能提供身份断言。
OperationError-
由于某种原因,SDP 的生成失败;这是一个通用的捕获所有异常的失败。
返回值
一个 Promise,它将使用一个包含 RTCSessionDescription 对象相同属性的对象来完成。
示例
以下代码段取自随文章 Signaling and video calling 提供的代码。此代码来自处理发送 offer 给另一个对等方的消息的处理程序,该消息通过信令通道传输。
注意: 请记住,这是信令过程的一部分,其传输层是完全由您自己决定的实现细节。在这种情况下,使用 WebSocket 连接发送一个具有 type 字段(值为 "video-answer")的 JSON 消息给另一个对等方,将 answer 传送到发送连接 offer 的设备。传递给 sendToServer() 函数的对象的内容,以及 Promise fulfillment handler 中的所有其他内容,完全取决于您的设计。
pc.createAnswer()
.then((answer) => pc.setLocalDescription(answer))
.then(() => {
// Send the answer to the remote peer through the signaling server.
})
.catch(handleGetUserMediaError);
这会请求 RTCPeerConnection 创建并返回一个新的 answer。在我们的 Promise handler 中,通过调用 setLocalDescription(),将返回的 answer 设置为连接本地端的描述。
一旦成功,answer 将使用您选择的任何协议发送到信令服务器。
使用 Promise.catch() 来捕获和处理错误。
请参阅我们 WebRTC 聊天示例中的 Handling the invitation,以查看此片段所源自的完整代码;这将帮助您理解信令过程以及 answer 的工作原理。
规范
| 规范 |
|---|
| WebRTC:浏览器中的实时通信 # dom-rtcpeerconnection-createanswer |
浏览器兼容性
加载中…