Google is committed to advancing racial equity for Black communities. See how.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Canali dati

Lo standard WebRTC copre anche un'API per l'invio di dati arbitrari tramite RTCPeerConnection . Questo viene fatto chiamando createDataChannel() su un oggetto RTCPeerConnection , che restituisce un oggetto RTCDataChannel .

 const peerConnection = new RTCPeerConnection(configuration);
const dataChannel = peerConnection.createDataChannel();
 

Peer remoto può ricevere canali dati intercettando il datachannel evento sul RTCPeerConnection oggetto. L'evento ricevuto è del tipo RTCDataChannelEvent e contiene una proprietà del channel che rappresenta RTCDataChannel connesso tra i peer.

 const peerConnection = new RTCPeerConnection(configuration);
peerConnection.addEventListener('datachannel', event => {
    const dataChannel = event.channel;
});
 

Apri e chiudi eventi

Prima che un canale di dati possa essere utilizzato per l'invio di dati, il client deve attendere fino a quando non viene aperto. Questo viene fatto ascoltando l'evento open . Allo stesso modo, c'è un evento close per quando entrambe le parti chiudono il canale.

 const messageBox = document.querySelector('#messageBox');
const sendButton = document.querySelector('#sendButton');
const peerConnection = new RTCPeerConnection(configuration);
const dataChannel = peerConnection.createDataChannel();

// Enable textarea and button when opened
dataChannel.addEventListener('open', event => {
    messageBox.disabled = false;
    messageBox.focus();
    sendButton.disabled = false;
});

// Disable input when closed
dataChannel.addEventListener('close', event => {
    messageBox.disabled = false;
    sendButton.disabled = false;
});
 

messaggi

L'invio di un messaggio su un RTCDataChannel viene effettuato chiamando la funzione send() con i dati che vogliamo inviare. Il data parametro per questa funzione può essere una stringa, un Blob , un ArrayBuffer oe ArrayBufferView .

 const messageBox = document.querySelector('#messageBox');
const sendButton = document.querySelector('#sendButton');

// Send a simple text message when we click the button
sendButton.addEventListener('click', event => {
    const message = messageBox.textContent;
    dataChannel.send(message);
})
 

Il peer remoto riceverà i messaggi inviati su un RTCDataChannel ascoltando l'evento del message .

 const incomingMessages = document.querySelector('#incomingMessages');

const peerConnection = new RTCPeerConnection(configuration);
const dataChannel = peerConnection.createDataChannel();

// Append new messages to the box of incoming messages
dataChannel.addEventListener('message', event => {
    const message = event.data;
    incomingMessages.textContent += message + '\n';
});