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
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Januar 2020 browserübergreifend verfügbar.

Ein datachannel-Ereignis wird an eine RTCPeerConnection-Instanz gesendet, wenn der Verbindung ein RTCDataChannel hinzugefügt wurde, weil der entfernte Peer RTCPeerConnection.createDataChannel() aufgerufen hat.

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

Dieses Ereignis kann nicht abgebrochen werden und breitet sich nicht im DOM-Baum aus.

Syntax

Verwenden Sie den Ereignisnamen in addEventListener():

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

Alternativ können Sie die Event-Handler-Eigenschaft der Schnittstelle verwenden:

js
ondatachannel = (event) => { }

Ereignistyp

Ein RTCDataChannelEvent. Erbt von Event.

Event RTCDataChannelEvent

Beispiele

Dieses Beispiel richtet eine Funktion ein, die datachannel-Ereignisse verarbeitet. Sie erfasst die Informationen, die für die Kommunikation über den neu hinzugefügten RTCDataChannel benötigt werden, und fügt Event-Handler für die auf diesem Kanal auftretenden Ereignisse hinzu.

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

receiveChannel wird auf den Wert der Ereigniseigenschaft channel gesetzt. Diese gibt das RTCDataChannel-Objekt an, das den Datenkanal zwischen dem entfernten und dem lokalen Peer repräsentiert.

Stattdessen kann derselbe Code auch die Event-Handler-Eigenschaft ondatachannel der RTCPeerConnection-Schnittstelle verwenden, wie hier gezeigt. Beachten Sie jedoch, dass dadurch gegebenenfalls andere mit ondatachannel hinzugefügte Event-Listener ersetzt werden:

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

Spezifikationen

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

Browser-Kompatibilität

Siehe auch