voxeet / dolby.io generando múltiples conferencias
Estoy usando dolby.io
Hasta ahora he implementado unirme a la conferencia, salir de la conferencia, iniciar y detener el video, iniciar y detener la grabación, iniciar y detener la pantalla compartida. El problema al que me enfrento es sobre conferencias múltiples. Quiero implementar múltiples conferencias con ID de conferencia únicos para que cada usuario especificado para la conferencia relevante se una a la suya. No tengo idea de su documentación oficial.
aquí está mi código
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);
}
}
Estoy agotado y cansado de buscar en Google. Será de gran ayuda si alguien puede orientar o proporcionar orientación hacia una documentación más elaborada. He leído todos y cada uno de los documentos de Dolby. Gracias por leer
Respuestas
Cuando llama create()
, se genera una nueva identificación de conferencia, que es una guía específica para su cuenta. Puede llamar a get_id () para encontrarlo. También puede especificar un alias para facilitar la legibilidad cuando puede haber varias conferencias activas en un momento dado.
Si desea tener varias conferencias, debe llamar create()
varias veces. Es decir, la expectativa es que la aplicación típica inicialice solo una conferencia, pero hay varias instancias en ejecución, cada una con su propia conferencia y / o para invitar a otros a una conferencia existente. Para las aplicaciones web, puede ser una sesión de usuario separada en lugar de una aplicación móvil implementada por separado. Es posible que desee llevar un registro de los identificadores que se generan para cada usuario en sus propios servicios.
Es posible que esté buscando todas las conferencias que están activas en una cuenta en un momento dado mientras prueba o monitorea sus aplicaciones implementadas. Puede utilizar la API de Monitor getConferences para obtener esa lista.
Si tiene preguntas adicionales, probablemente sea mejor utilizar el soporte de Dolby.io para obtener respuestas y orientación más personales.