voxeet / dolby.io menghasilkan banyak konferensi
Saya menggunakan dolby.io
Sampai sekarang saya telah menerapkan konferensi gabungan, meninggalkan konferensi, memulai dan menghentikan video, memulai dan menghentikan perekaman, memulai dan menghentikan berbagi layar. Apa yang saya hadapi adalah tentang beberapa konferensi. Saya ingin menerapkan beberapa konferensi dengan ID konferensi yang unik sehingga setiap pengguna yang ditentukan untuk konferensi yang relevan harus bergabung dengan miliknya sendiri. Saya tidak mendapatkan ide dari dokumentasi resminya.
ini kode saya
const initUI = () => {
const nameMessage = document.getElementById('name-message');
const joinButton = document.getElementById('join-btn');
const conferenceAliasInput = document.getElementById('alias-input');
const leaveButton = document.getElementById('leave-btn');
const startVideoBtn = document.getElementById('start-video-btn');
const stopVideoBtn = document.getElementById('stop-video-btn');
const startScreenShareBtn = document.getElementById('start-screenshare-btn');
const stopScreenShareBtn = document.getElementById('stop-screenshare-btn');
const startRecordingBtn = document.getElementById('start-recording-btn');
const stopRecordingBtn = document.getElementById('stop-recording-btn');
//const mute_unmute = document.getElementById('mute');
//oxeetSDK.conference.mute(VoxeetSDK.session.participant, VoxeetSDK.session.participant.isMuted);
//let isMuted = VoxeetSDK.conference.toggleMute(VoxeetSDK.session.participant);
nameMessage.innerHTML = `${randomName}`; joinButton.disabled = false; joinButton.onclick = () => { let conferenceAlias = conferenceAliasInput.value; /* 1. Create a conference room with an alias 2. Join the conference with its id */ VoxeetSDK.conference.create({ alias: conferenceAlias }) .then((conference) => VoxeetSDK.conference.join(conference, {})) .then(() => { joinButton.disabled = true; leaveButton.disabled = false; startVideoBtn.disabled = false; startScreenShareBtn.disabled = false; startRecordingBtn.disabled = false; }) .catch((e) => console.log('Something wrong happened : ' + e)) }; leaveButton.onclick = () => { VoxeetSDK.conference.leave() .then(() => { joinButton.disabled = false; leaveButton.disabled = true; startScreenShareBtn.disabled = true; stopScreenShareBtn.disabled = true; }) .catch((err) => { console.log(err); }); }; startVideoBtn.onclick = () => { VoxeetSDK.conference.startVideo(VoxeetSDK.session.participant) .then(() => { startVideoBtn.disabled = true; stopVideoBtn.disabled = false; }); }; stopVideoBtn.onclick = () => { VoxeetSDK.conference.stopVideo(VoxeetSDK.session.participant) .then(() => { stopVideoBtn.disabled = true; startVideoBtn.disabled = false; }); }; startScreenShareBtn.onclick = () => { VoxeetSDK.conference.startScreenShare() .then(() => { startScreenShareBtn.disabled = true; stopScreenShareBtn.disabled = false; }) .catch((e) => console.log(e)) }; stopScreenShareBtn.onclick = () => { VoxeetSDK.conference.stopScreenShare() .then(() => { startScreenShareBtn.disabled = false; stopScreenShareBtn.disabled = true; }) .catch((e) => console.log(e)) }; startRecordingBtn.onclick = () => { let recordStatus = document.getElementById('record-status'); VoxeetSDK.recording.start() .then(() => { recordStatus.innerText = 'Recording...'; startRecordingBtn.disabled = true; stopRecordingBtn.disabled = false; }) .catch((err) => { console.log(err); }) }; stopRecordingBtn.onclick = () => { let recordStatus = document.getElementById('record-status'); VoxeetSDK.recording.stop() .then(() => { recordStatus.innerText = ''; startRecordingBtn.disabled = false; stopRecordingBtn.disabled = true; }) .catch((err) => { console.log(err); }) }; }; const addVideoNode = (participant, stream) => { const videoContainer = document.getElementById('video-container'); let videoNode = document.getElementById('video-' + participant.id); if(!videoNode) { videoNode = document.createElement('video'); videoNode.setAttribute('id', 'video-' + participant.id); videoNode.setAttribute('controls', true); //VoxeetSDK.conference.mute(VoxeetSDK.session.participant, VoxeetSDK.session.participant.isMuted); //let isMuted = VoxeetSDK.conference.toggleMute(VoxeetSDK.session.participant); //console.log(isMuted); //videoNode.setAttribute('height', 240); //videoNode.setAttribute('width', 720); videoContainer.appendChild(videoNode); videoNode.autoplay = 'autoplay'; videoNode.muted = true; } navigator.attachMediaStream(videoNode, stream); }; const removeVideoNode = (participant) => { let videoNode = document.getElementById('video-' + participant.id); if (videoNode) { videoNode.parentNode.removeChild(videoNode); } }; const addParticipantNode = (participant) => { //const members_count++; const participantsList = document.getElementById('participants-list'); // if the participant is the current session user, don't add himself to the list if (participant.id === VoxeetSDK.session.participant.id) return; // let participantNode = document.createElement('li'); // participantNode.setAttribute('id', 'participant-' + participant.id); // participantNode.innerText = `${participant.info.name}`;
//alert(VoxeetSDK.session.participant);
//document.getElementById('members_count').innerText=participant.id;
let participantNode = document.createElement('div');
participantNode.setAttribute('class', 'tabcnt-item');
participantNode.setAttribute('id', 'participant-' + participant.id);
//document.getElementById('members_count').innerText = document.getElementById('members_count').innerText + 1;
//document.getElementById('members_count').innerText = members_count;
participantNode.innerText = `${participant.info.name}`; const send_html = "<div class='tabcnt-item'><div class='row align-items-center'><div class='col-md-8'><div class='media'><img src='images/pp.png' alt=''><div class='media-body'><h3>'"+`${participant.info.name}`+"'</h3><p>[email protected]</p></div></div></div><div class='col-md-4'><ul><li><a href='#'><i class='fas fa-video'></i></a></li><li><a href='#'><i class='fas fa-microphone'></i></a></li></ul></div></div></div>";
participantNode.innerHTML = send_html;
participantsList.appendChild(participantNode);
document.getElementById('members_count').innerText= $('.tab-cnt').length; }; const removeParticipantNode = (participant) => { let participantNode = document.getElementById('participant-' + participant.id); if (participantNode) { participantNode.parentNode.removeChild(participantNode); document.getElementById('members_count').innerText= $('.tab-cnt').length;
}
};
const addScreenShareNode = (stream) => {
const screenShareContainer = document.getElementById('screenshare-container');
let screenShareNode = document.getElementById('screenshare');
if (screenShareNode) return alert('There is already a participant sharing his screen !');
screenShareNode = document.createElement('video');
screenShareNode.setAttribute('id', 'screenshare');
screenShareNode.autoplay = 'autoplay';
navigator.attachMediaStream(screenShareNode, stream);
screenShareContainer.appendChild(screenShareNode);
}
const removeScreenShareNode = () => {
let screenShareNode = document.getElementById('screenshare');
if (screenShareNode) {
screenShareNode.parentNode.removeChild(screenShareNode);
}
}
Saya capek dan capek googling. Akan sangat membantu jika beberapa orang dapat memandu atau memberikan arahan menuju dokumentasi yang lebih elaboratif. Saya telah membaca setiap dokumen Dolby. Terima kasih sudah membaca
Jawaban
Ketika Anda memanggil create()
id konferensi baru dihasilkan yang merupakan pedoman khusus untuk akun Anda. Anda dapat memanggil get_id () untuk menemukannya. Anda juga dapat menentukan sebuah alias untuk membantu keterbacaan ketika mungkin ada beberapa konferensi yang aktif pada waktu tertentu.
Jika Anda ingin mengadakan banyak konferensi, Anda harus menelepon create()
beberapa kali. Artinya, harapannya adalah aplikasi tipikal hanya menginisialisasi satu konferensi tetapi ada beberapa instance yang berjalan, masing-masing memiliki konferensi sendiri dan / atau mengundang orang lain ke konferensi yang ada. Untuk aplikasi web, itu mungkin sesi pengguna terpisah daripada aplikasi seluler yang diterapkan secara terpisah. Anda mungkin ingin melakukan pembukuan untuk ID apa yang dihasilkan untuk setiap pengguna di layanan Anda sendiri.
Anda mungkin mencari semua konferensi yang aktif di akun pada waktu tertentu saat menguji atau memantau aplikasi yang Anda terapkan. Anda dapat menggunakan GetConferences API Monitor untuk mendapatkan daftar itu.
Jika Anda memiliki pertanyaan tambahan, mungkin yang terbaik adalah menggunakan Dukungan Dolby.io untuk jawaban dan panduan yang lebih pribadi.