بعد ربط RTCPeerConnection
بجهاز نظير عن بُعد، يمكن
بث الصوت والفيديو بينهما. هذه هي النقطة التي نربط فيها
البث الذي نتلقّاه من getUserMedia()
بالRTCPeerConnection
. يتألّف بث الوسائط
من مقطع صوتي واحد على الأقل، ويتم إضافته بشكلٍ فردي
إلى RTCPeerConnection
عندما نريد نقل الوسائط إلى العميل العميق
المستقل.
const localStream = await getUserMedia({video: true, audio: true});
const peerConnection = new RTCPeerConnection(iceConfig);
localStream.getTracks().forEach(track => {
peerConnection.addTrack(track, localStream);
});
يمكن إضافة مسارات إلى RTCPeerConnection
قبل أن يتم ربطه بجهاز شقيق عن بُعد، لذا من المنطقي إجراء هذا الإعداد في أقرب وقت ممكن بدلاً من انتظار اكتمال عملية الربط.
إضافة مسارات عن بُعد
لتلقّي المقاطع الصوتية البعيدة التي أضافها الجهاز الآخر، نُسجِّل معالجًا للصوت على RTCPeerConnection
المحلي الذي يستمع إلى حدث track
. يحتوي العنصر
RTCTrackEvent
على صفيف من عناصر MediaStream
التي تحتوي على قيم
MediaStream.id
نفسها التي تحتوي عليها أحداث البث المحلية المقابلة للعقدة المشابهة. في المثال الذي نطرحه، يكون كل مقطع صوتي مرتبطًا ببث واحد فقط.
تجدر الإشارة إلى أنّه على الرغم من تطابق أرقام تعريف MediaStream
على جانبَي اتصال الندّ،
لا ينطبق ذلك بشكل عام على أرقام تعريف MediaStreamTrack
.
const remoteVideo = document.querySelector('#remoteVideo');
peerConnection.addEventListener('track', async (event) => {
const [remoteStream] = event.streams;
remoteVideo.srcObject = remoteStream;
});