Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

RTCDataChannel: send()-Methode

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨Januar 2020⁩.

Die send()-Methode der RTCDataChannel-Schnittstelle sendet Daten über den Datenkanal zum entfernten Peer. Dies kann jederzeit erfolgen, außer während des anfänglichen Prozesses der Erstellung des zugrunde liegenden Transportkanals. Daten, die vor dem Herstellen der Verbindung gesendet werden, werden gepuffert, sofern möglich (oder es tritt ein Fehler auf, wenn es nicht möglich ist) und werden auch gepuffert, wenn sie gesendet werden, während die Verbindung geschlossen wird oder bereits geschlossen ist.

Hinweis: Verschiedene Browser haben unterschiedliche Begrenzungen für die Größe der Nachrichten, die Sie senden können. Spezifikationen existieren, um zu definieren, wie große Nachrichten automatisch fragmentiert werden können, aber nicht alle Browser implementieren dies, und die, die es tun, haben verschiedene zusätzliche Einschränkungen. Dies wird mit der Zeit weniger kompliziert, aber für jetzt, wenn Sie Fragen haben, siehe Verstehen der Nachrichtenbegrenzungen.

Syntax

js
send(data)

Parameter

data

Die zu übertragenden Daten über die Verbindung. Dies kann ein String, ein Blob, ein ArrayBuffer, ein TypedArray oder ein DataView-Objekt sein.

Rückgabewert

Keiner (undefined).

Ausnahmen

InvalidStateError DOMException

Wird ausgelöst, wenn der Datenkanal seine eigene Verbindung noch nicht eingerichtet hat (das heißt, sein readyState ist connecting). Der Datenkanal muss seine eigene Verbindung herstellen, da er einen separaten Transportkanal von dem der Medieninhalte verwendet. Dieser Fehler tritt auf, ohne das data gesendet oder gepuffert wird.

OperationError DOMException

Wird ausgelöst, wenn die angegebenen data gepuffert werden müssten und im Puffer kein Platz dafür ist.

TypeError

Wird ausgelöst, wenn die angegebenen data zu groß sind, um vom anderen Peer empfangen zu werden. Da es mehrere Techniken gibt, um große Daten in kleinere Stücke für den Transfer zu unterteilen, ist es möglich, Szenarien zu begegnen, in denen der andere Peer nicht die gleichen Techniken unterstützt. Zum Beispiel, wenn ein Peer ein moderner Browser ist, der die EOR (End of Record)-Flagge verwendet, um anzuzeigen, wann eine empfangene Nachricht das letzte Stück eines in mehrere Teile gesendeten Objekts ist, das über send() gesendet wurde. Für weitere Informationen zu Einschränkungen der Nachrichtengröße, siehe Verstehen der Nachrichtenbegrenzungen.

Beispiele

In diesem Beispiel wird eine Routine namens sendMessage() erstellt, die ein Objekt als Eingabe akzeptiert und dem entfernten Peer über das RTCDataChannel einen JSON-String mit dem angegebenen Objekt und einem Zeitstempel sendet.

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

function sendMessage(msg) {
  const obj = {
    message: msg,
    timestamp: new Date(),
  };
  dc.send(JSON.stringify(obj));
}

Spezifikationen

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

Browser-Kompatibilität

Siehe auch