RTCPeerConnection:createAnswer() 方法

Baseline 已廣泛支援

此功能已成熟,可跨多種裝置和瀏覽器版本使用。自 2017 年 9 月以來,它已在瀏覽器中提供。

RTCPeerConnection 介面的 createAnswer() 方法在 WebRTC 連線的 offer/answer 協商過程中,用於建立對從遠端端收到的 offer 的 SDP answer。

answer 包含有關會話中已附加的媒體、瀏覽器支援的編解碼器和選項以及已收集的任何 ICE 候選的資訊。answer 將傳遞給返回的 Promise,然後應將其傳送到 offer 的源以繼續協商過程。

語法

js
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 物件相同屬性的物件來完成。

type

一個值為 "answer" 的字串。

SDP

一個包含描述會話的 SDP 的字串,將傳送給遠端端。

示例

以下程式碼段取自隨文章 Signaling and video calling 提供的程式碼。此程式碼來自處理傳送 offer 給另一個對等方的訊息的處理程式,該訊息透過信令通道傳輸。

注意: 請記住,這是信令過程的一部分,其傳輸層是完全由您自己決定的實現細節。在這種情況下,使用 WebSocket 連線傳送一個具有 type 欄位(值為 "video-answer")的 JSON 訊息給另一個對等方,將 answer 傳送到傳送連線 offer 的裝置。傳遞給 sendToServer() 函式的物件的內容,以及 Promise fulfillment handler 中的所有其他內容,完全取決於您的設計。

js
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

瀏覽器相容性