RTCDataChannel: close()-Methode

Die RTCDataChannel.close()-Methode schließt den RTCDataChannel. Beide Peers dürfen diese Methode aufrufen, um die Schließung des Kanals einzuleiten.

Das Schließen des Datenkanals erfolgt nicht sofort. Der größte Teil des Schließungsvorgangs wird asynchron abgewickelt; Sie können erkennen, wann der Kanal vollständig geschlossen ist, indem Sie auf ein close-Ereignis auf dem Datenkanal achten.

Die Abfolge der Ereignisse, die als Reaktion auf den Aufruf dieser Methode auftreten:

  1. RTCDataChannel.readyState wird auf closing gesetzt.
  2. Ein Hintergrundprozess wird eingerichtet, um die restlichen Schritte unten zu bearbeiten, und close() kehrt zum Aufrufer zurück.
  3. Die Transportschicht verarbeitet alle gepufferten Nachrichten; die Protokollschicht entscheidet, ob sie gesendet oder verworfen werden.
  4. Der zugrunde liegende Datentransport wird geschlossen.
  5. Die RTCDataChannel.readyState-Eigenschaft wird auf closed gesetzt.
  6. Wenn der Transport mit einem Fehler geschlossen wurde, wird dem RTCDataChannel ein error-Ereignis gesendet, dessen name auf NetworkError gesetzt ist.
  7. Ein close-Ereignis wird an den Kanal gesendet.

Syntax

js
close()

Parameter

Keine.

Rückgabewert

Keiner (undefined).

Beispiele

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…

Spezifikationen

Specification
WebRTC: Real-Time Communication in Browsers
# dom-rtcdatachannel-close

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch