RTCDataChannel: close() 方法

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流瀏覽器均已支援。

RTCDataChannel.close() 方法用於關閉 RTCDataChannel。任何一方都可以呼叫此方法來發起通道關閉。

資料通道的關閉並非瞬時完成。關閉連線的大部分過程是非同步處理的;您可以透過監聽資料通道上的 close 事件來檢測通道何時已完成關閉。

呼叫此方法後發生的事件順序:

  1. RTCDataChannel.readyState 設定為 closing
  2. 建立一個後臺任務來處理以下剩餘步驟,並且 close() 方法返回給呼叫者。
  3. 傳輸層處理任何已緩衝的訊息;協議層決定是傳送還是丟棄它們。
  4. 底層資料傳輸被關閉。
  5. RTCDataChannel.readyState 屬性設定為 closed
  6. 如果傳輸關閉時發生錯誤,則 RTCDataChannel 會收到一個 error 事件,其 name 設定為 NetworkError
  7. 向通道傳送一個 close 事件。

語法

js
close()

引數

無。

返回值

無(undefined)。

示例

js
const pc = new RTCPeerConnection();
const dc = pc.createDataChannel("my channel");

dc.onmessage = (event) => {
  console.log(`received: ${event.data}`);
  dc.close(); // We decided to close after the first received message
};

dc.onopen = () => {
  console.log("datachannel open");
};

dc.onclose = () => {
  console.log("datachannel close");
};

// Now negotiate the connection and so forth…

規範

規範
WebRTC:瀏覽器中的即時通訊
# dom-rtcdatachannel-close

瀏覽器相容性

另見