diff --git a/openvidu-testapp/src/app/components/dialogs/session-properties-dialog/session-properties-dialog.component.css b/openvidu-testapp/src/app/components/dialogs/session-properties-dialog/session-properties-dialog.component.css
index 2657ce01..d57066f6 100644
--- a/openvidu-testapp/src/app/components/dialogs/session-properties-dialog/session-properties-dialog.component.css
+++ b/openvidu-testapp/src/app/components/dialogs/session-properties-dialog/session-properties-dialog.component.css
@@ -50,3 +50,7 @@ mat-radio-button:first-child {
mat-form-field {
margin-right: 9px;
}
+
+#force-publishing-checkbox {
+ margin-right: 10px;
+}
\ No newline at end of file
diff --git a/openvidu-testapp/src/app/components/dialogs/session-properties-dialog/session-properties-dialog.component.html b/openvidu-testapp/src/app/components/dialogs/session-properties-dialog/session-properties-dialog.component.html
index e340667f..0d49f036 100644
--- a/openvidu-testapp/src/app/components/dialogs/session-properties-dialog/session-properties-dialog.component.html
+++ b/openvidu-testapp/src/app/components/dialogs/session-properties-dialog/session-properties-dialog.component.html
@@ -118,10 +118,13 @@
-
+
Force
publishing
+
+ Reconnection on server failure
+
@@ -132,5 +135,5 @@
+ [mat-dialog-close]="{sessionProperties: sessionProperties, turnConf: turnConf, manualTurnConf: manualTurnConf, customToken: customToken, forcePublishing: forcePublishing, reconnectionOnServerFailure: reconnectionOnServerFailure, connectionProperties: generateConnectionProperties()}">SAVE
diff --git a/openvidu-testapp/src/app/components/dialogs/session-properties-dialog/session-properties-dialog.component.ts b/openvidu-testapp/src/app/components/dialogs/session-properties-dialog/session-properties-dialog.component.ts
index 965fc831..453fae3d 100644
--- a/openvidu-testapp/src/app/components/dialogs/session-properties-dialog/session-properties-dialog.component.ts
+++ b/openvidu-testapp/src/app/components/dialogs/session-properties-dialog/session-properties-dialog.component.ts
@@ -15,6 +15,7 @@ export class SessionPropertiesDialogComponent {
manualTurnConf: RTCIceServer = { urls: [] };
customToken: string;
forcePublishing: boolean = false;
+ reconnectionOnServerFailure: boolean = false;
connectionProperties: ConnectionProperties;
forceVideoCodec = VideoCodec;
@@ -33,6 +34,7 @@ export class SessionPropertiesDialogComponent {
this.manualTurnConf = data.manualTurnConf;
this.customToken = data.customToken;
this.forcePublishing = data.forcePublishing;
+ this.reconnectionOnServerFailure = data.reconnectionOnServerFailure;
this.connectionProperties = data.connectionProperties;
}
diff --git a/openvidu-testapp/src/app/components/openvidu-instance/openvidu-instance.component.ts b/openvidu-testapp/src/app/components/openvidu-instance/openvidu-instance.component.ts
index d0c962a7..19c72af3 100644
--- a/openvidu-testapp/src/app/components/openvidu-instance/openvidu-instance.component.ts
+++ b/openvidu-testapp/src/app/components/openvidu-instance/openvidu-instance.component.ts
@@ -150,6 +150,7 @@ export class OpenviduInstanceComponent implements OnInit, OnChanges, OnDestroy {
manualTurnConf: RTCIceServer = { urls: [] };
customToken: string;
forcePublishing: boolean;
+ reconnectionOnServerFailure: boolean;
connectionProperties: ConnectionProperties = {
role: OpenViduRole.PUBLISHER,
record: true,
@@ -448,12 +449,20 @@ export class OpenviduInstanceComponent implements OnInit, OnChanges, OnDestroy {
if (this.sessionEvents.sessionDisconnected !== oldValues.sessionDisconnected || firstTime) {
this.session.off('sessionDisconnected');
if (this.sessionEvents.sessionDisconnected) {
- this.session.on('sessionDisconnected', (event: SessionDisconnectedEvent) => {
+ this.session.on('sessionDisconnected', async (event: SessionDisconnectedEvent) => {
this.updateEventList('sessionDisconnected', '', event);
this.subscribers = [];
delete this.publisher;
delete this.session;
delete this.OV;
+
+ if (event.reason === 'nodeCrashed' && this.reconnectionOnServerFailure) {
+ console.warn('Reconnecting after node crash');
+ await this.initializeNodeClient((event.target as Session).sessionId);
+ const connection: Connection = await this.createConnection();
+ this.joinSessionShared(connection.token);
+ }
+
});
}
}
@@ -634,6 +643,7 @@ export class OpenviduInstanceComponent implements OnInit, OnChanges, OnDestroy {
manualTurnConf: this.manualTurnConf,
customToken: this.customToken,
forcePublishing: this.forcePublishing,
+ reconnectionOnServerFailure: this.reconnectionOnServerFailure,
connectionProperties: this.connectionProperties,
}
});
@@ -648,6 +658,7 @@ export class OpenviduInstanceComponent implements OnInit, OnChanges, OnDestroy {
this.manualTurnConf = result.manualTurnConf;
this.customToken = result.customToken;
this.forcePublishing = result.forcePublishing;
+ this.reconnectionOnServerFailure = result.reconnectionOnServerFailure;
this.connectionProperties = result.connectionProperties;
}
document.getElementById('session-settings-btn-' + this.index).classList.remove('cdk-program-focused');