بدء البث عن بُعد

بعد ربط 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;
});