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

بعد توصيل 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;
});