diff --git a/bigbluebutton-html5/imports/api/audio/client/bridge/kurento.js b/bigbluebutton-html5/imports/api/audio/client/bridge/kurento.js index fadce7246ccc0431bc0d096010bb7a964ee505b3..bb8e613ad54fe296c22d55def76ae4763c1b8eb9 100644 --- a/bigbluebutton-html5/imports/api/audio/client/bridge/kurento.js +++ b/bigbluebutton-html5/imports/api/audio/client/bridge/kurento.js @@ -1,5 +1,8 @@ import BaseAudioBridge from './base'; +const MEDIA = Meteor.settings.public.media; +const MEDIA_TAG = MEDIA.mediaTag; + export default class KurentoAudioBridge extends BaseAudioBridge { constructor(userData) { super(); @@ -20,22 +23,34 @@ export default class KurentoAudioBridge extends BaseAudioBridge { window.kurentoExitAudio(); } - joinAudio({ isListenOnly }) { - if (!isListenOnly) { - return; - } - - window.kurentoJoinAudio( - 'remote-media', - this.voiceBridge, - "GLOBAL_AUDIO_" + this.voiceBridge, - this.internalMeetingID, - null, - null, - null, - this.userId, - this.userName, - null, - ); + joinAudio({ isListenOnly }, callback) { + return new Promise((resolve, reject) => { + this.callback = callback; + if (!isListenOnly) { + return resolve(); + } + + window.kurentoJoinAudio( + "remote-media", + this.voiceBridge, + "GLOBAL_AUDIO_" + this.voiceBridge, + this.internalMeetingID, + null, + null, + null, + this.userId, + this.userName, + null, + ); + + resolve (this.callback({ status: this.baseCallStates.started })); + }); + } + + exitAudio() { + return new Promise((resolve, reject) => { + window.kurentoExitAudio(); + return resolve (this.callback({status: this.baseCallStates.ended})); + }); } } diff --git a/labs/bbb-webrtc-sfu/lib/mcs-core/lib/adapters/freeswitch/freeswitch.js b/labs/bbb-webrtc-sfu/lib/mcs-core/lib/adapters/freeswitch/freeswitch.js index f3a9e0b0fa21b71a451ccd4fcbef08e012d88813..74c59070fa3a1de8ea4071f1edcb145c7abde935 100644 --- a/labs/bbb-webrtc-sfu/lib/mcs-core/lib/adapters/freeswitch/freeswitch.js +++ b/labs/bbb-webrtc-sfu/lib/mcs-core/lib/adapters/freeswitch/freeswitch.js @@ -48,7 +48,7 @@ module.exports = class Freeswitch extends EventEmitter { try { let userAgent = await this._createUserAgent(type, params.name, roomId); this._userAgents[roomId] = userAgent; - return Promise.resolve(roomId); + return Promise.resolve(roomId); } catch (err) { return Promise.reject(err); @@ -62,7 +62,7 @@ module.exports = class Freeswitch extends EventEmitter { if (source) { return new Promise((resolve, reject) => { switch (type) { - case 'ALL': + case 'ALL': case 'AUDIO': @@ -80,7 +80,7 @@ module.exports = class Freeswitch extends EventEmitter { } } - stop (roomId, elementId) { + stop (roomId, type = {}, elementId) { Logger.info("[mcs-media-freeswitch] Releasing endpoint", elementId, "from room", roomId); let userAgent = this._userAgents[elementId]; let rtpConverter = this._rtpConverters[elementId]; @@ -88,7 +88,7 @@ module.exports = class Freeswitch extends EventEmitter { if (userAgent) { Logger.info("[mcs-media-freeswitch] Stopping user agent", elementId); userAgent.stop(); - delete this._userAgents[elementId]; + delete this._userAgents[elementId]; } if (rtpConverter) { @@ -200,7 +200,7 @@ module.exports = class Freeswitch extends EventEmitter { connector: this.sipjsLogConnector }, traceSip: true, - hackIpInContact: LOCAL_IP_ADDRESS + hackIpInContact: LOCAL_IP_ADDRESS }); Logger.info("[mcs-freeswitch-adapter] Created new user agent for endpoint " + displayName);