From 47b6a979bdafaad232211ca65e727bbc1693478e Mon Sep 17 00:00:00 2001 From: Micael Gallego Date: Sat, 15 Oct 2016 02:08:23 +0200 Subject: [PATCH] Simplify testapp with a simple OpenVidu browser API --- .../src/main/resources/static/ts/Main.ts | 2 +- .../src/main/resources/static/ts/OpenVidu.ts | 74 +++-- .../main/resources/static/ts/Participant.ts | 55 ++-- .../static/ts/{Room.ts => Session.ts} | 78 ++--- .../src/main/resources/static/ts/Stream.ts | 61 ++-- .../main/resources/static/ts_js/OpenVidu.js | 270 ++++++++++-------- .../resources/static/ts_js/OpenVidu.js.map | 2 +- .../src/main/resources/static/index.html | 10 +- .../src/main/resources/static/js/testapp.js | 103 +++---- 9 files changed, 348 insertions(+), 307 deletions(-) rename openvidu-browser/src/main/resources/static/ts/{Room.ts => Session.ts} (85%) diff --git a/openvidu-browser/src/main/resources/static/ts/Main.ts b/openvidu-browser/src/main/resources/static/ts/Main.ts index 2f8e0a33..a5a0b1ac 100644 --- a/openvidu-browser/src/main/resources/static/ts/Main.ts +++ b/openvidu-browser/src/main/resources/static/ts/Main.ts @@ -1,4 +1,4 @@ -export { Room } from './Room'; +export { Session } from './Session'; export { Participant } from './Participant'; export { Stream } from './Stream'; export { OpenVidu } from './OpenVidu'; \ No newline at end of file diff --git a/openvidu-browser/src/main/resources/static/ts/OpenVidu.ts b/openvidu-browser/src/main/resources/static/ts/OpenVidu.ts index 9270eddd..76ed595e 100644 --- a/openvidu-browser/src/main/resources/static/ts/OpenVidu.ts +++ b/openvidu-browser/src/main/resources/static/ts/OpenVidu.ts @@ -15,25 +15,32 @@ * */ -import { Room } from './Room'; +import { Session, SessionOptions } from './Session'; import { Stream } from './Stream'; declare var RpcBuilder: any; -type Callback = ( error?: any, openVidu?: T ) => void; +export type Callback = ( error?: any, openVidu?: T ) => void; export class OpenVidu { - private room: Room; - private userName: string; + private session: Session; private jsonRpcClient: any; private rpcParams: any; private callback: Callback; - - constructor( private wsUri: string ) { } + private camera: Stream; + + constructor( private wsUri: string ) { + if(this.wsUri.charAt(wsUri.length-1) != '/'){ + this.wsUri = '/'; + } + this.wsUri += 'room'; + + this.session = new Session(this); + } getRoom() { - return this.room; + return this.session; } connect( callback: Callback ): void { @@ -77,7 +84,7 @@ export class OpenVidu { private customNotification( params ) { if ( this.isRoomAvailable() ) { - this.room.emitEvent( "custom-message-received", [{ params: params }] ); + this.session.emitEvent( "custom-message-received", [{ params: params }] ); } } @@ -90,7 +97,7 @@ export class OpenVidu { } private isRoomAvailable() { - if ( this.room !== undefined && this.room instanceof Room ) { + if ( this.session !== undefined && this.session instanceof Session ) { return true; } else { console.warn( 'Room instance not found' ); @@ -101,7 +108,7 @@ export class OpenVidu { private disconnectCallback() { console.log( 'Websocket connection lost' ); if ( this.isRoomAvailable() ) { - this.room.onLostConnection(); + this.session.onLostConnection(); } else { alert( 'Connection error. Please reload page.' ); } @@ -110,7 +117,7 @@ export class OpenVidu { private reconnectingCallback() { console.log( 'Websocket connection lost (reconnecting)' ); if ( this.isRoomAvailable() ) { - this.room.onLostConnection(); + this.session.onLostConnection(); } else { alert( 'Connection error. Please reload page.' ); } @@ -122,49 +129,49 @@ export class OpenVidu { private onParticipantJoined( params ) { if ( this.isRoomAvailable() ) { - this.room.onParticipantJoined( params ); + this.session.onParticipantJoined( params ); } } private onParticipantPublished( params ) { if ( this.isRoomAvailable() ) { - this.room.onParticipantPublished( params ); + this.session.onParticipantPublished( params ); } } private onParticipantLeft( params ) { if ( this.isRoomAvailable() ) { - this.room.onParticipantLeft( params ); + this.session.onParticipantLeft( params ); } } private onParticipantEvicted( params ) { if ( this.isRoomAvailable() ) { - this.room.onParticipantEvicted( params ); + this.session.onParticipantEvicted( params ); } } private onNewMessage( params ) { if ( this.isRoomAvailable() ) { - this.room.onNewMessage( params ); + this.session.onNewMessage( params ); } } private iceCandidateEvent( params ) { if ( this.isRoomAvailable() ) { - this.room.recvIceCandidate( params ); + this.session.recvIceCandidate( params ); } } private onRoomClosed( params ) { if ( this.isRoomAvailable() ) { - this.room.onRoomClosed( params ); + this.session.onRoomClosed( params ); } } private onMediaError( params ) { if ( this.isRoomAvailable() ) { - this.room.onMediaError( params ); + this.session.onMediaError( params ); } } @@ -198,31 +205,44 @@ export class OpenVidu { close( forced ) { if ( this.isRoomAvailable() ) { - this.room.leave( forced, this.jsonRpcClient ); + this.session.leave( forced, this.jsonRpcClient ); } }; disconnectParticipant( stream ) { if ( this.isRoomAvailable() ) { - this.room.disconnect( stream ); + this.session.disconnect( stream ); } } - Stream( room, options ) { + getCamera(options?) { + if(this.camera){ + return this.camera; + } + options = options || { audio: true, video: true, data: true } - options.participant = room.getLocalParticipant(); - return new Stream( this, true, room, options ); + options.participant = this.session.getLocalParticipant(); + this.camera = new Stream( this, true, this.session, options ); + return this.camera; }; - Room( options ) { - let room = new Room( this, options ); - return room; + joinSession(options: SessionOptions, callback: Callback) { + + this.session.configure(options); + + this.session.connect(); + + this.session.addEventListener('room-connected', roomEvent => callback(undefined,this.session)); + + this.session.addEventListener('error-room', error => callback(error)); + + return this.session; }; //CHAT diff --git a/openvidu-browser/src/main/resources/static/ts/Participant.ts b/openvidu-browser/src/main/resources/static/ts/Participant.ts index 559ff162..29957e93 100644 --- a/openvidu-browser/src/main/resources/static/ts/Participant.ts +++ b/openvidu-browser/src/main/resources/static/ts/Participant.ts @@ -1,7 +1,7 @@ // Participant -------------------------------- import { Stream, StreamOptions } from './Stream'; import { OpenVidu } from './OpenVidu'; -import { Room } from './Room'; +import { Session } from './Session'; type ObjMap = { [s: string]: T; } @@ -16,43 +16,44 @@ export class Participant { private streams: ObjMap = {}; private streamsOpts: StreamOptions[] = []; - constructor( private openVidu: OpenVidu, private local: boolean, private room: Room, private options: ParticipantOptions ) { + constructor( private openVidu: OpenVidu, private local: boolean, private room: Session, private options?: ParticipantOptions ) { - this.id = options.id; + if ( options ) { - if ( options.streams ) { + this.id = options.id; - for ( let streamOptions of options.streams ) { + if ( options.streams ) { - let streamOpts = { - id: streamOptions.id, - participant: this, - recvVideo: ( streamOptions.recvVideo == undefined ? true : streamOptions.recvVideo ), - recvAudio: ( streamOptions.recvAudio == undefined ? true : streamOptions.recvAudio ), - audio: streamOptions.audio, - video: streamOptions.video, - data: streamOptions.data + for ( let streamOptions of options.streams ) { + + let streamOpts = { + id: streamOptions.id, + participant: this, + recvVideo: ( streamOptions.recvVideo == undefined ? true : streamOptions.recvVideo ), + recvAudio: ( streamOptions.recvAudio == undefined ? true : streamOptions.recvAudio ), + audio: streamOptions.audio, + video: streamOptions.video, + data: streamOptions.data + } + let stream = new Stream( openVidu, false, room, streamOpts ); + + this.addStream( stream ); + this.streamsOpts.push( streamOpts ); } - let stream = new Stream( openVidu, false, room, streamOpts ); - - this.addStream( stream ); - this.streamsOpts.push( streamOpts ); } } - + console.log( "New " + ( local ? "local " : "remote " ) + "participant " + this.id + ", streams opts: ", this.streamsOpts ); - - } setId( newId ) { this.id = newId; } - addStream( stream ) { - this.streams[stream.getID()] = stream; - this.room.getStreams()[stream.getID()] = stream; + addStream( stream: Stream ) { + this.streams[stream.getIdInParticipant()] = stream; + this.room.getStreams()[stream.getIdInParticipant()] = stream; } getStreams() { @@ -65,17 +66,17 @@ export class Participant { } } - getID() { + getId() { return this.id; } sendIceCandidate( candidate ) { console.debug(( this.local ? "Local" : "Remote" ), "candidate for", - this.getID(), JSON.stringify( candidate ) ); - + this.getId(), JSON.stringify( candidate ) ); + this.openVidu.sendRequest( "onIceCandidate", { - endpointName: this.getID(), + endpointName: this.getId(), candidate: candidate.candidate, sdpMid: candidate.sdpMid, sdpMLineIndex: candidate.sdpMLineIndex diff --git a/openvidu-browser/src/main/resources/static/ts/Room.ts b/openvidu-browser/src/main/resources/static/ts/Session.ts similarity index 85% rename from openvidu-browser/src/main/resources/static/ts/Room.ts rename to openvidu-browser/src/main/resources/static/ts/Session.ts index 17516ce6..fa8c8b8e 100644 --- a/openvidu-browser/src/main/resources/static/ts/Room.ts +++ b/openvidu-browser/src/main/resources/static/ts/Session.ts @@ -4,37 +4,43 @@ import { Participant, ParticipantOptions } from './Participant'; declare let EventEmitter; -export interface RoomOptions { - room: string; - user: string; - subscribeToStreams: boolean; - updateSpeakerInterval: number; - thresholdSpeaker: number; +export interface SessionOptions { + sessionId: string; + participantId: string; + subscribeToStreams?: boolean; + updateSpeakerInterval?: number; + thresholdSpeaker?: number; } -export class Room { +export class Session { - private name: string; + private id: string; private ee = new EventEmitter(); private streams = {}; private participants = {}; private participantsSpeaking: Participant[] = []; private connected = false; - private localParticipant; + private localParticipant: Participant; private subscribeToStreams: boolean; private updateSpeakerInterval: number; public thresholdSpeaker: number; + private options: SessionOptions - constructor( private openVidu: OpenVidu, private options: RoomOptions ) { + constructor( private openVidu: OpenVidu ) { + this.localParticipant = new Participant( this.openVidu, true, this ); + } - this.name = options.room; + configure( options: SessionOptions ) { + + this.options = options; + this.id = options.sessionId; this.subscribeToStreams = options.subscribeToStreams || true; this.updateSpeakerInterval = options.updateSpeakerInterval || 1500; this.thresholdSpeaker = options.thresholdSpeaker || -50; - + this.localParticipant.setId( options.participantId ); this.activateUpdateMainSpeaker(); - this.localParticipant = new Participant(openVidu, true, this, { id: options.user }); - this.participants[options.user] = this.localParticipant; + + this.participants[options.participantId] = this.localParticipant; } private activateUpdateMainSpeaker() { @@ -63,8 +69,8 @@ export class Room { connect() { let joinParams = { - user: this.options.user, - room: this.options.room, + user: this.options.participantId, + room: this.options.sessionId, dataChannels: false } @@ -101,7 +107,7 @@ export class Room { let participant = new Participant( this.openVidu, false, this, exParticipants[i] ); - this.participants[participant.getID()] = participant; + this.participants[participant.getId()] = participant; roomEvent.participants.push( participant ); @@ -115,6 +121,12 @@ export class Room { } this.ee.emitEvent( 'room-connected', [roomEvent] ); + + if ( this.subscribeToStreams ) { + for ( let stream of roomEvent.streams ) { + this.ee.emitEvent( 'stream-added', [{ stream }] ); + } + } } }); } @@ -128,7 +140,7 @@ export class Room { let participant = new Participant( this.openVidu, false, this, options ); - let pid = participant.getID(); + let pid = participant.getId(); if ( !( pid in this.participants ) ) { console.info( "Publisher not found in participants list by its id", pid ); } else { @@ -137,9 +149,7 @@ export class Room { //replacing old participant (this one has streams) this.participants[pid] = participant; - this.ee.emitEvent( 'participant-published', [{ - participant: participant - }] ); + this.ee.emitEvent( 'participant-published', [{ participant }] ); let streams = participant.getStreams(); for ( let key in streams ) { @@ -147,9 +157,7 @@ export class Room { if ( this.subscribeToStreams ) { stream.subscribe(); - this.ee.emitEvent( 'stream-added', [{ - stream: stream - }] ); + this.ee.emitEvent( 'stream-added', [{ stream }] ); } } } @@ -158,7 +166,7 @@ export class Room { let participant = new Participant( this.openVidu, false, this, msg ); - let pid = participant.getID(); + let pid = participant.getId(); if ( !( pid in this.participants ) ) { console.log( "New participant to participants list with id", pid ); this.participants[pid] = participant; @@ -274,10 +282,10 @@ export class Room { return; } - console.log( 'Lost connection in room ' + this.name ); - let room = this.name; + console.log( 'Lost connection in room ' + this.id ); + let room = this.id; if ( room !== undefined ) { - this.ee.emitEvent( 'lost-connection', [{room}] ); + this.ee.emitEvent( 'lost-connection', [{ room }] ); } else { console.error( 'Room undefined when lost connection' ); } @@ -324,7 +332,7 @@ export class Room { } } - disconnect( stream ) { + disconnect( stream: Stream ) { let participant = stream.getParticipant(); if ( !participant ) { @@ -332,12 +340,12 @@ export class Room { return; } - delete this.participants[participant.getID()]; + delete this.participants[participant.getId()]; participant.dispose(); if ( participant === this.localParticipant ) { - - console.log( "Unpublishing my media (I'm " + participant.getID() + ")" ); + + console.log( "Unpublishing my media (I'm " + participant.getId() + ")" ); delete this.localParticipant; this.openVidu.sendRequest( 'unpublishVideo', function( error, response ) { if ( error ) { @@ -349,15 +357,15 @@ export class Room { } else { - console.log( "Unsubscribing from " + stream.getGlobalID() ); + console.log( "Unsubscribing from " + stream.getId() ); this.openVidu.sendRequest( 'unsubscribeFromVideo', { - sender: stream.getGlobalID() + sender: stream.getId() }, function( error, response ) { if ( error ) { console.error( error ); } else { - console.info( "Unsubscribed correctly from " + stream.getGlobalID() ); + console.info( "Unsubscribed correctly from " + stream.getId() ); } }); } diff --git a/openvidu-browser/src/main/resources/static/ts/Stream.ts b/openvidu-browser/src/main/resources/static/ts/Stream.ts index 865ff54b..2b2b08eb 100644 --- a/openvidu-browser/src/main/resources/static/ts/Stream.ts +++ b/openvidu-browser/src/main/resources/static/ts/Stream.ts @@ -6,8 +6,8 @@ * stream.hasAudio(); stream.hasVideo(); stream.hasData(); */ import { Participant } from './Participant'; -import { Room } from './Room'; -import { OpenVidu } from './OpenVidu'; +import { Session } from './Session'; +import { OpenVidu, Callback } from './OpenVidu'; declare type JQuery = any; declare var $: JQuery; @@ -54,7 +54,7 @@ export class Stream { private dataChannel: boolean; private dataChannelOpened = false; - constructor( private openVidu: OpenVidu, private local: boolean, private room: Room, options: StreamOptions ) { + constructor( private openVidu: OpenVidu, private local: boolean, private room: Session, options: StreamOptions ) { if ( options.id ) { this.id = options.id; @@ -98,7 +98,7 @@ export class Stream { } getChannelName() { - return this.getGlobalID() + '_' + this.chanId++; + return this.getId() + '_' + this.chanId++; } @@ -146,7 +146,7 @@ export class Stream { showSpinner( spinnerParentId: string ) { let progress = document.createElement( 'div' ); - progress.id = 'progress-' + this.getGlobalID(); + progress.id = 'progress-' + this.getId(); progress.style.background = "center transparent url('img/spinner.gif') no-repeat"; let spinnerParent = document.getElementById( spinnerParentId ); if(spinnerParent){ @@ -155,14 +155,14 @@ export class Stream { } hideSpinner( spinnerId?: string ) { - spinnerId = ( spinnerId === undefined ) ? this.getGlobalID() : spinnerId; + spinnerId = ( spinnerId === undefined ) ? this.getId() : spinnerId; $( jq( 'progress-' + spinnerId ) ).hide(); } playOnlyVideo( parentElement, thumbnailId ) { this.video = document.createElement( 'video' ); - this.video.id = 'native-video-' + this.getGlobalID(); + this.video.id = 'native-video-' + this.getId(); this.video.autoplay = true; this.video.controls = false; if ( this.wrStream ) { @@ -170,7 +170,7 @@ export class Stream { $( jq( thumbnailId ) ).show(); this.hideSpinner(); } else { - console.log( "No wrStream yet for", this.getGlobalID() ); + console.log( "No wrStream yet for", this.getId() ); } this.videoElements.push( { @@ -198,7 +198,7 @@ export class Stream { let container = document.createElement( 'div' ); container.className = "participant"; - container.id = this.getGlobalID(); + container.id = this.getId(); let thumbnail = document.getElementById( thumbnailId ); if(thumbnail){ thumbnail.appendChild( container ); @@ -208,21 +208,21 @@ export class Stream { let name = document.createElement( 'div' ); container.appendChild( name ); - let userName = this.getGlobalID().replace( '_webcam', '' ); + let userName = this.getId().replace( '_webcam', '' ); if ( userName.length >= 16 ) { userName = userName.substring( 0, 16 ) + "..."; } name.appendChild( document.createTextNode( userName ) ); - name.id = "name-" + this.getGlobalID(); + name.id = "name-" + this.getId(); name.className = "name"; - name.title = this.getGlobalID(); + name.title = this.getId(); this.showSpinner( thumbnailId ); return this.playOnlyVideo( container, thumbnailId ); } - getID() { + getIdInParticipant() { return this.id; } @@ -230,15 +230,15 @@ export class Stream { return this.participant; } - getGlobalID() { + getId() { if ( this.participant ) { - return this.participant.getID() + "_" + this.id; + return this.participant.getId() + "_" + this.id; } else { return this.id + "_webcam"; } } - init() { + requestCameraAccess(callback: Callback) { this.participant.addStream( this ); @@ -256,21 +256,22 @@ export class Stream { getUserMedia( constraints, userStream => { this.wrStream = userStream; - this.ee.emitEvent( 'access-accepted', null ); + callback(undefined, this); }, error => { console.error( "Access denied", error ); - this.ee.emitEvent( 'access-denied', null ); + callback(error, undefined); }); } publishVideoCallback( error, sdpOfferParam, wp ) { + if ( error ) { return console.error( "(publish) SDP offer error: " + JSON.stringify( error ) ); } console.log( "Sending SDP offer to publish as " - + this.getGlobalID(), sdpOfferParam ); + + this.getId(), sdpOfferParam ); this.openVidu.sendRequest( "publishVideo", { sdpOffer: sdpOfferParam, @@ -293,9 +294,9 @@ export class Stream { + JSON.stringify( error ) ); } console.log( "Sending SDP offer to subscribe to " - + this.getGlobalID(), sdpOfferParam ); + + this.getId(), sdpOfferParam ); this.openVidu.sendRequest( "receiveVideoFrom", { - sender: this.getGlobalID(), + sender: this.getId(), sdpOffer: sdpOfferParam }, ( error, response ) => { if ( error ) { @@ -359,7 +360,7 @@ export class Stream { }); } console.log( "Waiting for SDP offer to be generated (" - + ( this.local ? "local" : "remote" ) + " peer: " + this.getGlobalID() + ")" ); + + ( this.local ? "local" : "remote" ) + " peer: " + this.getId() + ")" ); } publish() { @@ -389,9 +390,9 @@ export class Stream { type: 'answer', sdp: sdpAnswer, }); - console.log( this.getGlobalID() + ": set peer connection with recvd SDP answer", + console.log( this.getId() + ": set peer connection with recvd SDP answer", sdpAnswer ); - let participantId = this.getGlobalID(); + let participantId = this.getId(); let pc = this.wp.peerConnection; pc.setRemoteDescription( answer, () => { // Avoids to subscribe to your own stream remotely @@ -423,9 +424,9 @@ export class Stream { let video = videoElement.video; video.src = URL.createObjectURL( this.wrStream ); video.onplay = () => { - console.log( this.getGlobalID() + ': ' + 'Video playing' ); + console.log( this.getId() + ': ' + 'Video playing' ); $( jq( thumbnailId ) ).show(); - this.hideSpinner( this.getGlobalID() ); + this.hideSpinner( this.getId() ); }; } this.room.emitEvent( 'stream-subscribed', [{ @@ -433,7 +434,7 @@ export class Stream { }] ); } }, error => { - console.error( this.getGlobalID() + ": Error setting SDP to the peer connection: " + console.error( this.getId() + ": Error setting SDP to the peer connection: " + JSON.stringify( error ) ); }); } @@ -456,7 +457,7 @@ export class Stream { this.speechEvent.stop(); } - console.log( this.getGlobalID() + ": Stream '" + this.id + "' unpublished" ); + console.log( this.getId() + ": Stream '" + this.id + "' unpublished" ); } dispose() { @@ -471,7 +472,7 @@ export class Stream { this.videoElements.forEach( ve => disposeElement( ve ) ); - disposeElement( "progress-" + this.getGlobalID() ); + disposeElement( "progress-" + this.getId() ); if ( this.wp ) { this.wp.dispose(); @@ -490,6 +491,6 @@ export class Stream { this.speechEvent.stop(); } - console.log( this.getGlobalID() + ": Stream '" + this.id + "' disposed" ); + console.log( this.getId() + ": Stream '" + this.id + "' disposed" ); } } diff --git a/openvidu-browser/src/main/resources/static/ts_js/OpenVidu.js b/openvidu-browser/src/main/resources/static/ts_js/OpenVidu.js index 44ed80c3..8d3d0157 100644 --- a/openvidu-browser/src/main/resources/static/ts_js/OpenVidu.js +++ b/openvidu-browser/src/main/resources/static/ts_js/OpenVidu.js @@ -14,15 +14,15 @@ * limitations under the License. * */ -System.register("OpenVidu", ["Room", "Stream"], function(exports_1, context_1) { +System.register("OpenVidu", ["Session", "Stream"], function(exports_1, context_1) { "use strict"; var __moduleName = context_1 && context_1.id; - var Room_1, Stream_1; + var Session_1, Stream_1; var OpenVidu; return { setters:[ - function (Room_1_1) { - Room_1 = Room_1_1; + function (Session_1_1) { + Session_1 = Session_1_1; }, function (Stream_1_1) { Stream_1 = Stream_1_1; @@ -31,9 +31,14 @@ System.register("OpenVidu", ["Room", "Stream"], function(exports_1, context_1) { OpenVidu = (function () { function OpenVidu(wsUri) { this.wsUri = wsUri; + if (this.wsUri.charAt(wsUri.length - 1) != '/') { + this.wsUri = '/'; + } + this.wsUri += 'room'; + this.session = new Session_1.Session(this); } OpenVidu.prototype.getRoom = function () { - return this.room; + return this.session; }; OpenVidu.prototype.connect = function (callback) { this.callback = callback; @@ -69,7 +74,7 @@ System.register("OpenVidu", ["Room", "Stream"], function(exports_1, context_1) { }; OpenVidu.prototype.customNotification = function (params) { if (this.isRoomAvailable()) { - this.room.emitEvent("custom-message-received", [{ params: params }]); + this.session.emitEvent("custom-message-received", [{ params: params }]); } }; OpenVidu.prototype.connectCallback = function (error) { @@ -81,7 +86,7 @@ System.register("OpenVidu", ["Room", "Stream"], function(exports_1, context_1) { } }; OpenVidu.prototype.isRoomAvailable = function () { - if (this.room !== undefined && this.room instanceof Room_1.Room) { + if (this.session !== undefined && this.session instanceof Session_1.Session) { return true; } else { @@ -92,7 +97,7 @@ System.register("OpenVidu", ["Room", "Stream"], function(exports_1, context_1) { OpenVidu.prototype.disconnectCallback = function () { console.log('Websocket connection lost'); if (this.isRoomAvailable()) { - this.room.onLostConnection(); + this.session.onLostConnection(); } else { alert('Connection error. Please reload page.'); @@ -101,7 +106,7 @@ System.register("OpenVidu", ["Room", "Stream"], function(exports_1, context_1) { OpenVidu.prototype.reconnectingCallback = function () { console.log('Websocket connection lost (reconnecting)'); if (this.isRoomAvailable()) { - this.room.onLostConnection(); + this.session.onLostConnection(); } else { alert('Connection error. Please reload page.'); @@ -112,42 +117,42 @@ System.register("OpenVidu", ["Room", "Stream"], function(exports_1, context_1) { }; OpenVidu.prototype.onParticipantJoined = function (params) { if (this.isRoomAvailable()) { - this.room.onParticipantJoined(params); + this.session.onParticipantJoined(params); } }; OpenVidu.prototype.onParticipantPublished = function (params) { if (this.isRoomAvailable()) { - this.room.onParticipantPublished(params); + this.session.onParticipantPublished(params); } }; OpenVidu.prototype.onParticipantLeft = function (params) { if (this.isRoomAvailable()) { - this.room.onParticipantLeft(params); + this.session.onParticipantLeft(params); } }; OpenVidu.prototype.onParticipantEvicted = function (params) { if (this.isRoomAvailable()) { - this.room.onParticipantEvicted(params); + this.session.onParticipantEvicted(params); } }; OpenVidu.prototype.onNewMessage = function (params) { if (this.isRoomAvailable()) { - this.room.onNewMessage(params); + this.session.onNewMessage(params); } }; OpenVidu.prototype.iceCandidateEvent = function (params) { if (this.isRoomAvailable()) { - this.room.recvIceCandidate(params); + this.session.recvIceCandidate(params); } }; OpenVidu.prototype.onRoomClosed = function (params) { if (this.isRoomAvailable()) { - this.room.onRoomClosed(params); + this.session.onRoomClosed(params); } }; OpenVidu.prototype.onMediaError = function (params) { if (this.isRoomAvailable()) { - this.room.onMediaError(params); + this.session.onMediaError(params); } }; OpenVidu.prototype.setRpcParams = function (params) { @@ -172,28 +177,36 @@ System.register("OpenVidu", ["Room", "Stream"], function(exports_1, context_1) { }; OpenVidu.prototype.close = function (forced) { if (this.isRoomAvailable()) { - this.room.leave(forced, this.jsonRpcClient); + this.session.leave(forced, this.jsonRpcClient); } }; ; OpenVidu.prototype.disconnectParticipant = function (stream) { if (this.isRoomAvailable()) { - this.room.disconnect(stream); + this.session.disconnect(stream); } }; - OpenVidu.prototype.Stream = function (room, options) { + OpenVidu.prototype.getCamera = function (options) { + if (this.camera) { + return this.camera; + } options = options || { audio: true, video: true, data: true }; - options.participant = room.getLocalParticipant(); - return new Stream_1.Stream(this, true, room, options); + options.participant = this.session.getLocalParticipant(); + this.camera = new Stream_1.Stream(this, true, this.session, options); + return this.camera; }; ; - OpenVidu.prototype.Room = function (options) { - var room = new Room_1.Room(this, options); - return room; + OpenVidu.prototype.joinSession = function (options, callback) { + var _this = this; + this.session.configure(options); + this.session.connect(); + this.session.addEventListener('room-connected', function (roomEvent) { return callback(undefined, _this.session); }); + this.session.addEventListener('error-room', function (error) { return callback(error); }); + return this.session; }; ; //CHAT @@ -238,22 +251,24 @@ System.register("Participant", ["Stream"], function(exports_2, context_2) { this.options = options; this.streams = {}; this.streamsOpts = []; - this.id = options.id; - if (options.streams) { - for (var _i = 0, _a = options.streams; _i < _a.length; _i++) { - var streamOptions = _a[_i]; - var streamOpts = { - id: streamOptions.id, - participant: this, - recvVideo: (streamOptions.recvVideo == undefined ? true : streamOptions.recvVideo), - recvAudio: (streamOptions.recvAudio == undefined ? true : streamOptions.recvAudio), - audio: streamOptions.audio, - video: streamOptions.video, - data: streamOptions.data - }; - var stream = new Stream_2.Stream(openVidu, false, room, streamOpts); - this.addStream(stream); - this.streamsOpts.push(streamOpts); + if (options) { + this.id = options.id; + if (options.streams) { + for (var _i = 0, _a = options.streams; _i < _a.length; _i++) { + var streamOptions = _a[_i]; + var streamOpts = { + id: streamOptions.id, + participant: this, + recvVideo: (streamOptions.recvVideo == undefined ? true : streamOptions.recvVideo), + recvAudio: (streamOptions.recvAudio == undefined ? true : streamOptions.recvAudio), + audio: streamOptions.audio, + video: streamOptions.video, + data: streamOptions.data + }; + var stream = new Stream_2.Stream(openVidu, false, room, streamOpts); + this.addStream(stream); + this.streamsOpts.push(streamOpts); + } } } console.log("New " + (local ? "local " : "remote ") + "participant " + this.id @@ -263,8 +278,8 @@ System.register("Participant", ["Stream"], function(exports_2, context_2) { this.id = newId; }; Participant.prototype.addStream = function (stream) { - this.streams[stream.getID()] = stream; - this.room.getStreams()[stream.getID()] = stream; + this.streams[stream.getIdInParticipant()] = stream; + this.room.getStreams()[stream.getIdInParticipant()] = stream; }; Participant.prototype.getStreams = function () { return this.streams; @@ -274,13 +289,13 @@ System.register("Participant", ["Stream"], function(exports_2, context_2) { this.streams[key].dispose(); } }; - Participant.prototype.getID = function () { + Participant.prototype.getId = function () { return this.id; }; Participant.prototype.sendIceCandidate = function (candidate) { - console.debug((this.local ? "Local" : "Remote"), "candidate for", this.getID(), JSON.stringify(candidate)); + console.debug((this.local ? "Local" : "Remote"), "candidate for", this.getId(), JSON.stringify(candidate)); this.openVidu.sendRequest("onIceCandidate", { - endpointName: this.getID(), + endpointName: this.getId(), candidate: candidate.candidate, sdpMid: candidate.sdpMid, sdpMLineIndex: candidate.sdpMLineIndex @@ -353,7 +368,7 @@ System.register("Stream", [], function(exports_3, context_3) { return this.localMirrored; }; Stream.prototype.getChannelName = function () { - return this.getGlobalID() + '_' + this.chanId++; + return this.getId() + '_' + this.chanId++; }; Stream.prototype.isDataChannelEnabled = function () { return this.dataChannel; @@ -390,7 +405,7 @@ System.register("Stream", [], function(exports_3, context_3) { }; Stream.prototype.showSpinner = function (spinnerParentId) { var progress = document.createElement('div'); - progress.id = 'progress-' + this.getGlobalID(); + progress.id = 'progress-' + this.getId(); progress.style.background = "center transparent url('img/spinner.gif') no-repeat"; var spinnerParent = document.getElementById(spinnerParentId); if (spinnerParent) { @@ -398,12 +413,12 @@ System.register("Stream", [], function(exports_3, context_3) { } }; Stream.prototype.hideSpinner = function (spinnerId) { - spinnerId = (spinnerId === undefined) ? this.getGlobalID() : spinnerId; + spinnerId = (spinnerId === undefined) ? this.getId() : spinnerId; $(jq('progress-' + spinnerId)).hide(); }; Stream.prototype.playOnlyVideo = function (parentElement, thumbnailId) { this.video = document.createElement('video'); - this.video.id = 'native-video-' + this.getGlobalID(); + this.video.id = 'native-video-' + this.getId(); this.video.autoplay = true; this.video.controls = false; if (this.wrStream) { @@ -412,7 +427,7 @@ System.register("Stream", [], function(exports_3, context_3) { this.hideSpinner(); } else { - console.log("No wrStream yet for", this.getGlobalID()); + console.log("No wrStream yet for", this.getId()); } this.videoElements.push({ thumb: thumbnailId, @@ -435,7 +450,7 @@ System.register("Stream", [], function(exports_3, context_3) { Stream.prototype.playThumbnail = function (thumbnailId) { var container = document.createElement('div'); container.className = "participant"; - container.id = this.getGlobalID(); + container.id = this.getId(); var thumbnail = document.getElementById(thumbnailId); if (thumbnail) { thumbnail.appendChild(container); @@ -443,32 +458,32 @@ System.register("Stream", [], function(exports_3, context_3) { this.elements.push(container); var name = document.createElement('div'); container.appendChild(name); - var userName = this.getGlobalID().replace('_webcam', ''); + var userName = this.getId().replace('_webcam', ''); if (userName.length >= 16) { userName = userName.substring(0, 16) + "..."; } name.appendChild(document.createTextNode(userName)); - name.id = "name-" + this.getGlobalID(); + name.id = "name-" + this.getId(); name.className = "name"; - name.title = this.getGlobalID(); + name.title = this.getId(); this.showSpinner(thumbnailId); return this.playOnlyVideo(container, thumbnailId); }; - Stream.prototype.getID = function () { + Stream.prototype.getIdInParticipant = function () { return this.id; }; Stream.prototype.getParticipant = function () { return this.participant; }; - Stream.prototype.getGlobalID = function () { + Stream.prototype.getId = function () { if (this.participant) { - return this.participant.getID() + "_" + this.id; + return this.participant.getId() + "_" + this.id; } else { return this.id + "_webcam"; } }; - Stream.prototype.init = function () { + Stream.prototype.requestCameraAccess = function (callback) { var _this = this; this.participant.addStream(this); var constraints = { @@ -484,10 +499,10 @@ System.register("Stream", [], function(exports_3, context_3) { }; getUserMedia(constraints, function (userStream) { _this.wrStream = userStream; - _this.ee.emitEvent('access-accepted', null); + callback(undefined, _this); }, function (error) { console.error("Access denied", error); - _this.ee.emitEvent('access-denied', null); + callback(error, undefined); }); }; Stream.prototype.publishVideoCallback = function (error, sdpOfferParam, wp) { @@ -497,7 +512,7 @@ System.register("Stream", [], function(exports_3, context_3) { + JSON.stringify(error)); } console.log("Sending SDP offer to publish as " - + this.getGlobalID(), sdpOfferParam); + + this.getId(), sdpOfferParam); this.openVidu.sendRequest("publishVideo", { sdpOffer: sdpOfferParam, doLoopback: this.displayMyRemote() || false @@ -520,9 +535,9 @@ System.register("Stream", [], function(exports_3, context_3) { + JSON.stringify(error)); } console.log("Sending SDP offer to subscribe to " - + this.getGlobalID(), sdpOfferParam); + + this.getId(), sdpOfferParam); this.openVidu.sendRequest("receiveVideoFrom", { - sender: this.getGlobalID(), + sender: this.getId(), sdpOffer: sdpOfferParam }, function (error, response) { if (error) { @@ -585,7 +600,7 @@ System.register("Stream", [], function(exports_3, context_3) { }); } console.log("Waiting for SDP offer to be generated (" - + (this.local ? "local" : "remote") + " peer: " + this.getGlobalID() + ")"); + + (this.local ? "local" : "remote") + " peer: " + this.getId() + ")"); }; Stream.prototype.publish = function () { // FIXME: Throw error when stream is not local @@ -606,8 +621,8 @@ System.register("Stream", [], function(exports_3, context_3) { type: 'answer', sdp: sdpAnswer, }); - console.log(this.getGlobalID() + ": set peer connection with recvd SDP answer", sdpAnswer); - var participantId = this.getGlobalID(); + console.log(this.getId() + ": set peer connection with recvd SDP answer", sdpAnswer); + var participantId = this.getId(); var pc = this.wp.peerConnection; pc.setRemoteDescription(answer, function () { // Avoids to subscribe to your own stream remotely @@ -635,9 +650,9 @@ System.register("Stream", [], function(exports_3, context_3) { var video = videoElement.video; video.src = URL.createObjectURL(_this.wrStream); video.onplay = function () { - console.log(_this.getGlobalID() + ': ' + 'Video playing'); + console.log(_this.getId() + ': ' + 'Video playing'); $(jq(thumbnailId)).show(); - _this.hideSpinner(_this.getGlobalID()); + _this.hideSpinner(_this.getId()); }; }; for (var _i = 0, _a = _this.videoElements; _i < _a.length; _i++) { @@ -649,7 +664,7 @@ System.register("Stream", [], function(exports_3, context_3) { }]); } }, function (error) { - console.error(_this.getGlobalID() + ": Error setting SDP to the peer connection: " + console.error(_this.getId() + ": Error setting SDP to the peer connection: " + JSON.stringify(error)); }); }; @@ -670,7 +685,7 @@ System.register("Stream", [], function(exports_3, context_3) { if (this.speechEvent) { this.speechEvent.stop(); } - console.log(this.getGlobalID() + ": Stream '" + this.id + "' unpublished"); + console.log(this.getId() + ": Stream '" + this.id + "' unpublished"); }; Stream.prototype.dispose = function () { function disposeElement(element) { @@ -680,7 +695,7 @@ System.register("Stream", [], function(exports_3, context_3) { } this.elements.forEach(function (e) { return disposeElement(e); }); this.videoElements.forEach(function (ve) { return disposeElement(ve); }); - disposeElement("progress-" + this.getGlobalID()); + disposeElement("progress-" + this.getId()); if (this.wp) { this.wp.dispose(); } @@ -697,7 +712,7 @@ System.register("Stream", [], function(exports_3, context_3) { if (this.speechEvent) { this.speechEvent.stop(); } - console.log(this.getGlobalID() + ": Stream '" + this.id + "' disposed"); + console.log(this.getId() + ": Stream '" + this.id + "' disposed"); }; return Stream; }()); @@ -705,35 +720,38 @@ System.register("Stream", [], function(exports_3, context_3) { } } }); -System.register("Room", ["Participant"], function(exports_4, context_4) { +System.register("Session", ["Participant"], function(exports_4, context_4) { "use strict"; var __moduleName = context_4 && context_4.id; var Participant_1; - var Room; + var Session; return { setters:[ function (Participant_1_1) { Participant_1 = Participant_1_1; }], execute: function() { - Room = (function () { - function Room(openVidu, options) { + Session = (function () { + function Session(openVidu) { this.openVidu = openVidu; - this.options = options; this.ee = new EventEmitter(); this.streams = {}; this.participants = {}; this.participantsSpeaking = []; this.connected = false; - this.name = options.room; + this.localParticipant = new Participant_1.Participant(this.openVidu, true, this); + } + Session.prototype.configure = function (options) { + this.options = options; + this.id = options.sessionId; this.subscribeToStreams = options.subscribeToStreams || true; this.updateSpeakerInterval = options.updateSpeakerInterval || 1500; this.thresholdSpeaker = options.thresholdSpeaker || -50; + this.localParticipant.setId(options.participantId); this.activateUpdateMainSpeaker(); - this.localParticipant = new Participant_1.Participant(openVidu, true, this, { id: options.user }); - this.participants[options.user] = this.localParticipant; - } - Room.prototype.activateUpdateMainSpeaker = function () { + this.participants[options.participantId] = this.localParticipant; + }; + Session.prototype.activateUpdateMainSpeaker = function () { var _this = this; setInterval(function () { if (_this.participantsSpeaking.length > 0) { @@ -743,20 +761,20 @@ System.register("Room", ["Participant"], function(exports_4, context_4) { } }, this.updateSpeakerInterval); }; - Room.prototype.getLocalParticipant = function () { + Session.prototype.getLocalParticipant = function () { return this.localParticipant; }; - Room.prototype.addEventListener = function (eventName, listener) { + Session.prototype.addEventListener = function (eventName, listener) { this.ee.addListener(eventName, listener); }; - Room.prototype.emitEvent = function (eventName, eventsArray) { + Session.prototype.emitEvent = function (eventName, eventsArray) { this.ee.emitEvent(eventName, eventsArray); }; - Room.prototype.connect = function () { + Session.prototype.connect = function () { var _this = this; var joinParams = { - user: this.options.user, - room: this.options.room, + user: this.options.participantId, + room: this.options.sessionId, dataChannels: false }; if (this.localParticipant) { @@ -783,7 +801,7 @@ System.register("Room", ["Participant"], function(exports_4, context_4) { var length_1 = exParticipants.length; for (var i = 0; i < length_1; i++) { var participant = new Participant_1.Participant(_this.openVidu, false, _this, exParticipants[i]); - _this.participants[participant.getID()] = participant; + _this.participants[participant.getId()] = participant; roomEvent.participants.push(participant); var streams = participant.getStreams(); for (var key in streams) { @@ -794,15 +812,21 @@ System.register("Room", ["Participant"], function(exports_4, context_4) { } } _this.ee.emitEvent('room-connected', [roomEvent]); + if (_this.subscribeToStreams) { + for (var _i = 0, _a = roomEvent.streams; _i < _a.length; _i++) { + var stream = _a[_i]; + _this.ee.emitEvent('stream-added', [{ stream: stream }]); + } + } } }); }; - Room.prototype.subscribe = function (stream) { + Session.prototype.subscribe = function (stream) { stream.subscribe(); }; - Room.prototype.onParticipantPublished = function (options) { + Session.prototype.onParticipantPublished = function (options) { var participant = new Participant_1.Participant(this.openVidu, false, this, options); - var pid = participant.getID(); + var pid = participant.getId(); if (!(pid in this.participants)) { console.info("Publisher not found in participants list by its id", pid); } @@ -811,23 +835,19 @@ System.register("Room", ["Participant"], function(exports_4, context_4) { } //replacing old participant (this one has streams) this.participants[pid] = participant; - this.ee.emitEvent('participant-published', [{ - participant: participant - }]); + this.ee.emitEvent('participant-published', [{ participant: participant }]); var streams = participant.getStreams(); for (var key in streams) { var stream = streams[key]; if (this.subscribeToStreams) { stream.subscribe(); - this.ee.emitEvent('stream-added', [{ - stream: stream - }]); + this.ee.emitEvent('stream-added', [{ stream: stream }]); } } }; - Room.prototype.onParticipantJoined = function (msg) { + Session.prototype.onParticipantJoined = function (msg) { var participant = new Participant_1.Participant(this.openVidu, false, this, msg); - var pid = participant.getID(); + var pid = participant.getId(); if (!(pid in this.participants)) { console.log("New participant to participants list with id", pid); this.participants[pid] = participant; @@ -842,7 +862,7 @@ System.register("Room", ["Participant"], function(exports_4, context_4) { participant: participant }]); }; - Room.prototype.onParticipantLeft = function (msg) { + Session.prototype.onParticipantLeft = function (msg) { var participant = this.participants[msg.name]; if (participant !== undefined) { delete this.participants[msg.name]; @@ -864,13 +884,13 @@ System.register("Room", ["Participant"], function(exports_4, context_4) { } }; ; - Room.prototype.onParticipantEvicted = function (msg) { + Session.prototype.onParticipantEvicted = function (msg) { this.ee.emitEvent('participant-evicted', [{ localParticipant: this.localParticipant }]); }; ; - Room.prototype.onNewMessage = function (msg) { + Session.prototype.onNewMessage = function (msg) { console.log("New message: " + JSON.stringify(msg)); var room = msg.room; var user = msg.user; @@ -886,7 +906,7 @@ System.register("Room", ["Participant"], function(exports_4, context_4) { console.error("User undefined in new message:", msg); } }; - Room.prototype.recvIceCandidate = function (msg) { + Session.prototype.recvIceCandidate = function (msg) { var candidate = { candidate: msg.candidate, sdpMid: msg.sdpMid, @@ -913,7 +933,7 @@ System.register("Room", ["Participant"], function(exports_4, context_4) { _loop_2(key); } }; - Room.prototype.onRoomClosed = function (msg) { + Session.prototype.onRoomClosed = function (msg) { console.log("Room closed: " + JSON.stringify(msg)); var room = msg.room; if (room !== undefined) { @@ -925,13 +945,13 @@ System.register("Room", ["Participant"], function(exports_4, context_4) { console.error("Room undefined in on room closed", msg); } }; - Room.prototype.onLostConnection = function () { + Session.prototype.onLostConnection = function () { if (!this.connected) { console.warn('Not connected to room, ignoring lost connection notification'); return; } - console.log('Lost connection in room ' + this.name); - var room = this.name; + console.log('Lost connection in room ' + this.id); + var room = this.id; if (room !== undefined) { this.ee.emitEvent('lost-connection', [{ room: room }]); } @@ -939,7 +959,7 @@ System.register("Room", ["Participant"], function(exports_4, context_4) { console.error('Room undefined when lost connection'); } }; - Room.prototype.onMediaError = function (params) { + Session.prototype.onMediaError = function (params) { console.error("Media error: " + JSON.stringify(params)); var error = params.error; if (error) { @@ -954,7 +974,7 @@ System.register("Room", ["Participant"], function(exports_4, context_4) { /* * forced means the user was evicted, no need to send the 'leaveRoom' request */ - Room.prototype.leave = function (forced, jsonRpcClient) { + Session.prototype.leave = function (forced, jsonRpcClient) { forced = !!forced; console.log("Leaving room (forced=" + forced + ")"); if (this.connected && !forced) { @@ -976,16 +996,16 @@ System.register("Room", ["Participant"], function(exports_4, context_4) { } } }; - Room.prototype.disconnect = function (stream) { + Session.prototype.disconnect = function (stream) { var participant = stream.getParticipant(); if (!participant) { console.error("Stream to disconnect has no participant", stream); return; } - delete this.participants[participant.getID()]; + delete this.participants[participant.getId()]; participant.dispose(); if (participant === this.localParticipant) { - console.log("Unpublishing my media (I'm " + participant.getID() + ")"); + console.log("Unpublishing my media (I'm " + participant.getId() + ")"); delete this.localParticipant; this.openVidu.sendRequest('unpublishVideo', function (error, response) { if (error) { @@ -997,26 +1017,26 @@ System.register("Room", ["Participant"], function(exports_4, context_4) { }); } else { - console.log("Unsubscribing from " + stream.getGlobalID()); + console.log("Unsubscribing from " + stream.getId()); this.openVidu.sendRequest('unsubscribeFromVideo', { - sender: stream.getGlobalID() + sender: stream.getId() }, function (error, response) { if (error) { console.error(error); } else { - console.info("Unsubscribed correctly from " + stream.getGlobalID()); + console.info("Unsubscribed correctly from " + stream.getId()); } }); } }; - Room.prototype.getStreams = function () { + Session.prototype.getStreams = function () { return this.streams; }; - Room.prototype.addParticipantSpeaking = function (participantId) { + Session.prototype.addParticipantSpeaking = function (participantId) { this.participantsSpeaking.push(participantId); }; - Room.prototype.removeParticipantSpeaking = function (participantId) { + Session.prototype.removeParticipantSpeaking = function (participantId) { var pos = -1; for (var i = 0; i < this.participantsSpeaking.length; i++) { if (this.participantsSpeaking[i] == participantId) { @@ -1028,20 +1048,20 @@ System.register("Room", ["Participant"], function(exports_4, context_4) { this.participantsSpeaking.splice(pos, 1); } }; - return Room; + return Session; }()); - exports_4("Room", Room); + exports_4("Session", Session); } } }); -System.register("Main", ["Room", "Participant", "Stream", "OpenVidu"], function(exports_5, context_5) { +System.register("Main", ["Session", "Participant", "Stream", "OpenVidu"], function(exports_5, context_5) { "use strict"; var __moduleName = context_5 && context_5.id; return { setters:[ - function (Room_2_1) { + function (Session_2_1) { exports_5({ - "Room": Room_2_1["Room"] + "Session": Session_2_1["Session"] }); }, function (Participant_2_1) { diff --git a/openvidu-browser/src/main/resources/static/ts_js/OpenVidu.js.map b/openvidu-browser/src/main/resources/static/ts_js/OpenVidu.js.map index d960445f..ad7b7f30 100644 --- a/openvidu-browser/src/main/resources/static/ts_js/OpenVidu.js.map +++ b/openvidu-browser/src/main/resources/static/ts_js/OpenVidu.js.map @@ -1 +1 @@ -{"version":3,"file":"OpenVidu.js","sourceRoot":"","sources":["../ts/OpenVidu.ts","../ts/Participant.ts","../ts/Stream.ts","../ts/Room.ts","../ts/Main.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"OpenVidu.js","sourceRoot":"","sources":["../ts/OpenVidu.ts","../ts/Participant.ts","../ts/Stream.ts","../ts/Session.ts","../ts/Main.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/openvidu-testapp/src/main/resources/static/index.html b/openvidu-testapp/src/main/resources/static/index.html index c074d2f0..8e668156 100644 --- a/openvidu-testapp/src/main/resources/static/index.html +++ b/openvidu-testapp/src/main/resources/static/index.html @@ -18,7 +18,7 @@ @@ -27,13 +27,13 @@

Join a Room

-
+

- +

-

diff --git a/openvidu-testapp/src/main/resources/static/js/testapp.js b/openvidu-testapp/src/main/resources/static/js/testapp.js index 878203d8..30f3c5e1 100644 --- a/openvidu-testapp/src/main/resources/static/js/testapp.js +++ b/openvidu-testapp/src/main/resources/static/js/testapp.js @@ -15,86 +15,86 @@ * */ var openVidu; -var room; +var session; window.onload = function() { console = new Console('console', console); } -function playVideo(stream) { - - var elementId = "video-" + stream.getGlobalID(); +function addVideoTag(stream) { + + var elementId = "video-" + stream.getId(); var div = document.createElement('div'); div.setAttribute("id", elementId); document.getElementById("participants").appendChild(div); - + stream.playThumbnail(elementId); // Check color var videoTag = document.getElementById("native-" + elementId); - var userId = stream.getGlobalID(); + var userId = stream.getId(); var canvas = document.createElement('CANVAS'); checkColor(videoTag, canvas, userId); } -function register() { - - var userId = document.getElementById('name').value; - var roomId = document.getElementById('roomName').value; - - var wsUri = 'wss://' + location.host + '/room'; - - openVidu = new Main.OpenVidu(wsUri); +function removeVideoTag(stream){ + var elementId = "video-" + stream.getId(); + var element = document.getElementById(elementId); + if (element) { + element.parentNode.removeChild(element); + } +} + +function joinRoom() { + + var sessionId = document.getElementById('roomId').value; + var participantId = document.getElementById('userId').value; + + openVidu = new OpenVidu('wss://' + location.host + '/'); + openVidu.connect(function(error, openVidu) { if (error) return console.log(error); - room = openVidu.Room({ - room : roomId, - user : userId, - subscribeToStreams : true - }); + var camera = openVidu.getCamera(); - var camera = openVidu.Stream(room); + camera.requestCameraAccess(function(error, camera) { - camera.addEventListener("access-accepted", function() { + if (error) + return console.log(error); - room.addEventListener("room-connected", function(roomEvent) { + var sessionOptions = { + sessionId : sessionId, + participantId : participantId + } + + openVidu.joinSession(sessionOptions, function(error, session) { + + if (error) + return console.log(error); document.getElementById('room-header').innerText = 'ROOM \"' - + room.name + '\"'; + + session.name + '\"'; + document.getElementById('join').style.display = 'none'; document.getElementById('room').style.display = 'block'; + addVideoTag(camera); + camera.publish(); + + session.addEventListener("stream-added", function(streamEvent) { + addVideoTag(streamEvent.stream); + }); - var streams = roomEvent.streams; - for (var i = 0; i < streams.length; i++) { - playVideo(streams[i]); - } - }); - - room.addEventListener("stream-added", function(streamEvent) { - playVideo(streamEvent.stream); - }); - - room.addEventListener("stream-removed", function(streamEvent) { - var element = document.getElementById("video-" - + streamEvent.stream.getGlobalID()); - if (element !== undefined) { - element.parentNode.removeChild(element); - } - }); - - playVideo(camera); - - room.connect(); + session.addEventListener("stream-removed", function(streamEvent) { + removeVideoTag(streamEvent.stream); + }); + + }); }); - - camera.init(); - }); } @@ -103,15 +103,6 @@ function leaveRoom() { document.getElementById('join').style.display = 'block'; document.getElementById('room').style.display = 'none'; - var streams = room.getStreams(); - for (var index in streams) { - var stream = streams[index]; - var element = document.getElementById("video-" + stream.getGlobalID()); - if (element) { - element.parentNode.removeChild(element); - } - } - openVidu.close(); }