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 |
瀏覽器相容性
載入中…