Backend clients: check if active session present when updating recording status

pull/87/merge
pabloFuente 2018-07-23 00:36:45 +02:00
parent 56e75a9b81
commit 729e7590da
5 changed files with 34 additions and 10 deletions

View File

@ -25,7 +25,7 @@ declare var MediaRecorder: any;
/** /**
* Easy recording of [[Stream]] objects straightaway from the browser. * Easy recording of [[Stream]] objects straightaway from the browser. Initialized with [[OpenVidu.initLocalRecorder]] method
* *
* > WARNING: Performing browser local recording of **remote streams** may cause some troubles. A long waiting time may be required after calling _LocalRecorder.stop()_ in this case * > WARNING: Performing browser local recording of **remote streams** may cause some troubles. A long waiting time may be required after calling _LocalRecorder.stop()_ in this case
*/ */

View File

@ -217,7 +217,13 @@ public class OpenVidu {
int statusCode = response.getStatusLine().getStatusCode(); int statusCode = response.getStatusLine().getStatusCode();
if ((statusCode == org.apache.http.HttpStatus.SC_OK)) { if ((statusCode == org.apache.http.HttpStatus.SC_OK)) {
Recording r = new Recording(httpResponseToJson(response)); Recording r = new Recording(httpResponseToJson(response));
OpenVidu.activeSessions.get(r.getSessionId()).setIsBeingRecorded(true); Session activeSession = OpenVidu.activeSessions.get(r.getSessionId());
if (activeSession != null) {
activeSession.setIsBeingRecorded(true);
} else {
log.warn("No active session found for sessionId '" + r.getSessionId()
+ "'. This instance of OpenVidu Java Client didn't create this session");
}
return r; return r;
} else { } else {
throw new OpenViduHttpException(statusCode); throw new OpenViduHttpException(statusCode);
@ -332,7 +338,13 @@ public class OpenVidu {
int statusCode = response.getStatusLine().getStatusCode(); int statusCode = response.getStatusLine().getStatusCode();
if ((statusCode == org.apache.http.HttpStatus.SC_OK)) { if ((statusCode == org.apache.http.HttpStatus.SC_OK)) {
Recording r = new Recording(httpResponseToJson(response)); Recording r = new Recording(httpResponseToJson(response));
OpenVidu.activeSessions.get(r.getSessionId()).setIsBeingRecorded(false); Session activeSession = OpenVidu.activeSessions.get(r.getSessionId());
if (activeSession != null) {
activeSession.setIsBeingRecorded(false);
} else {
log.warn("No active session found for sessionId '" + r.getSessionId()
+ "'. This instance of OpenVidu Java Client didn't create this session");
}
return r; return r;
} else { } else {
throw new OpenViduHttpException(statusCode); throw new OpenViduHttpException(statusCode);

View File

@ -170,7 +170,12 @@ export class OpenVidu {
if (res.status === 200) { if (res.status === 200) {
// SUCCESS response from openvidu-server (Recording in JSON format). Resolve new Recording // SUCCESS response from openvidu-server (Recording in JSON format). Resolve new Recording
const r: Recording = new Recording(res.data); const r: Recording = new Recording(res.data);
this.activeSessions.find(s => s.sessionId === r.sessionId).recording = true; const activeSession = this.activeSessions.find(s => s.sessionId === r.sessionId);
if (!!activeSession) {
activeSession.recording = true;
} else {
console.warn("No active session found for sessionId '" + r.sessionId + "'. This instance of OpenVidu Node Client didn't create this session");
}
resolve(r); resolve(r);
} else { } else {
// ERROR response from openvidu-server. Resolve HTTP status // ERROR response from openvidu-server. Resolve HTTP status
@ -219,7 +224,12 @@ export class OpenVidu {
if (res.status === 200) { if (res.status === 200) {
// SUCCESS response from openvidu-server (Recording in JSON format). Resolve new Recording // SUCCESS response from openvidu-server (Recording in JSON format). Resolve new Recording
const r: Recording = new Recording(res.data); const r: Recording = new Recording(res.data);
this.activeSessions.find(s => s.sessionId === r.sessionId).recording = false; const activeSession = this.activeSessions.find(s => s.sessionId === r.sessionId);
if (!!activeSession) {
activeSession.recording = false;
} else {
console.warn("No active session found for sessionId '" + r.sessionId + "'. This instance of OpenVidu Node Client didn't create this session");
}
resolve(r); resolve(r);
} else { } else {
// ERROR response from openvidu-server. Resolve HTTP status // ERROR response from openvidu-server. Resolve HTTP status

View File

@ -77,6 +77,7 @@ export class OpenviduInstanceComponent implements OnInit, OnChanges, OnDestroy {
subscribers: Subscriber[] = []; subscribers: Subscriber[] = [];
// OpenVidu Node Client objects // OpenVidu Node Client objects
OV_NodeClient: OpenViduAPI;
sessionAPI: SessionAPI; sessionAPI: SessionAPI;
sessionProperties: SessionPropertiesAPI = { sessionProperties: SessionPropertiesAPI = {
mediaMode: MediaMode.ROUTED, mediaMode: MediaMode.ROUTED,
@ -515,7 +516,7 @@ export class OpenviduInstanceComponent implements OnInit, OnChanges, OnDestroy {
openSessionApiDialog() { openSessionApiDialog() {
const dialogRef = this.dialog.open(SessionApiDialogComponent, { const dialogRef = this.dialog.open(SessionApiDialogComponent, {
data: { data: {
openVidu: new OpenViduAPI(this.openviduUrl, this.openviduSecret), openVidu: this.OV_NodeClient,
session: this.sessionAPI, session: this.sessionAPI,
sessionId: !!this.session ? this.session.sessionId : this.sessionName sessionId: !!this.session ? this.session.sessionId : this.sessionName
}, },
@ -597,11 +598,11 @@ export class OpenviduInstanceComponent implements OnInit, OnChanges, OnDestroy {
} }
getToken(): Promise<string> { getToken(): Promise<string> {
const OV_NodeClient = new OpenViduAPI(this.openviduUrl, this.openviduSecret); this.OV_NodeClient = new OpenViduAPI(this.openviduUrl, this.openviduSecret);
if (!this.sessionProperties.customSessionId) { if (!this.sessionProperties.customSessionId) {
this.sessionProperties.customSessionId = this.sessionName; this.sessionProperties.customSessionId = this.sessionName;
} }
return OV_NodeClient.createSession(this.sessionProperties) return this.OV_NodeClient.createSession(this.sessionProperties)
.then(session_NodeClient => { .then(session_NodeClient => {
this.sessionAPI = session_NodeClient; this.sessionAPI = session_NodeClient;
return session_NodeClient.generateToken({ role: this.participantRole }); return session_NodeClient.generateToken({ role: this.participantRole });

View File

@ -56,6 +56,7 @@ export class TestScenariosComponent implements OnInit, OnDestroy {
sessions: Session[] = []; sessions: Session[] = [];
// OpenVidu Node Client objects // OpenVidu Node Client objects
OV_NodeClient: OpenViduAPI;
sessionProperties: SessionPropertiesAPI = { sessionProperties: SessionPropertiesAPI = {
mediaMode: MediaMode.ROUTED, mediaMode: MediaMode.ROUTED,
recordingMode: RecordingMode.MANUAL, recordingMode: RecordingMode.MANUAL,
@ -274,11 +275,11 @@ export class TestScenariosComponent implements OnInit, OnDestroy {
} }
private getToken(): Promise<string> { private getToken(): Promise<string> {
const OV_NodeClient = new OpenViduAPI(this.openviduUrl, this.openviduSecret); this.OV_NodeClient = new OpenViduAPI(this.openviduUrl, this.openviduSecret);
if (!this.sessionProperties.customSessionId) { if (!this.sessionProperties.customSessionId) {
this.sessionProperties.customSessionId = this.fixedSessionId; this.sessionProperties.customSessionId = this.fixedSessionId;
} }
return OV_NodeClient.createSession(this.sessionProperties) return this.OV_NodeClient.createSession(this.sessionProperties)
.then(session_NodeClient => { .then(session_NodeClient => {
return session_NodeClient.generateToken(); return session_NodeClient.generateToken();
}); });