Google is committed to advancing racial equity for Black communities. See how.
דף זה תורגם על ידי Cloud Translation API.
Switch to English

ערוצי נתונים

תקן WebRTC מכסה גם ממשק API לשליחת נתונים שרירותיים דרך RTCPeerConnection . זה נעשה על ידי קריאה createDataChannel() על אובייקט RTCPeerConnection , המחזיר אובייקט RTCDataChannel .

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

העמיתים המרוחקים יכולים לקבל ערוצי נתונים על ידי האזנה עבור datachannel האירוע על RTCPeerConnection האובייקט. האירוע שהתקבל הוא מסוג RTCDataChannelEvent ומכיל נכס channel המייצג את RTCDataChannel המחובר בין העמיתים.

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

אירועים פתוחים וסוגרים

לפני שניתן יהיה להשתמש בערוץ נתונים לשליחת נתונים, הלקוח צריך לחכות עד שייפתח. זה נעשה על ידי האזנה לאירוע open . באופן דומה, יש אירוע close לשני הצדדים סוגרים את הערוץ.

 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;
});
 

הודעות

שליחת הודעה ב- RTCDataChannel מתבצעת על ידי חיוג לפונקציה send() עם הנתונים שאנו רוצים לשלוח. פרמטר data לפונקציה זו יכול להיות מחרוזת, Blob , ArrayBuffer או 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);
})
 

העמית המרוחק יקבל הודעות שנשלחו ב- RTCDataChannel ידי האזנה לאירוע 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';
});