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

View in English Always switch to English

RTCPeerConnection: datachannel Ereignis

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⁩.

Ein datachannel-Ereignis wird an eine RTCPeerConnection-Instanz gesendet, wenn ein RTCDataChannel zur Verbindung hinzugefügt wurde, als Ergebnis des Aufrufs von RTCPeerConnection.createDataChannel() durch den entfernten Peer.

Hinweis: Dieses Ereignis wird nicht ausgelöst, wenn das lokale Ende der Verbindung den Kanal erstellt.

Dieses Ereignis kann nicht abgebrochen werden und wird nicht propagiert.

Syntax

Verwenden Sie den Ereignisnamen in Methoden wie addEventListener(), oder setzen Sie eine Ereignishandler-Eigenschaft.

js
addEventListener("datachannel", (event) => { })

ondatachannel = (event) => { }

Ereignistyp

Ein RTCDataChannelEvent. Erbt von Event.

Event RTCDataChannelEvent

Ereigniseigenschaften

Erbt auch Eigenschaften von Event.

channel Schreibgeschützt

Liefert den RTCDataChannel, der mit dem Ereignis verknüpft ist.

Beispiele

Dieses Beispiel richtet eine Funktion ein, die datachannel-Ereignisse verarbeitet, indem sie die Informationen sammelt, die zur Kommunikation mit dem neu hinzugefügten RTCDataChannel erforderlich sind, und Ereignis-Handler für die auf diesem Kanal auftretenden Ereignisse hinzufügt.

js
pc.addEventListener("datachannel", (ev) => {
  receiveChannel = ev.channel;
  receiveChannel.onmessage = myHandleMessage;
  receiveChannel.onopen = myHandleOpen;
  receiveChannel.onclose = myHandleClose;
});

receiveChannel wird auf den Wert der channel-Eigenschaft des Ereignisses gesetzt, die das RTCDataChannel-Objekt spezifiziert, das den Datenkanal darstellt, der den entfernten Peer mit dem lokalen verbindet.

Der gleiche Code kann auch alternativ die ondatachannel-Ereignis-Handler-Eigenschaft der RTCPeerConnection-Schnittstelle verwenden, so wie hier:

js
pc.ondatachannel = (ev) => {
  receiveChannel = ev.channel;
  receiveChannel.onmessage = myHandleMessage;
  receiveChannel.onopen = myHandleOpen;
  receiveChannel.onclose = myHandleClose;
};

Spezifikationen

Specification
WebRTC: Real-Time Communication in Browsers
# dom-rtcpeerconnection-ondatachannel

Browser-Kompatibilität

Siehe auch