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