diff --git a/package.json b/package.json
index 34481611..f8160fad 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "red5pro-html-sdk-testbed",
- "version": "5.6.0-RC1",
+ "version": "5.6.0-RC4",
"description": "Testbed examples for Red5 Pro HTML SDK",
"main": "src/js/index.js",
"repository": {
diff --git a/src/page/sm-test/TwoWayStreamManagerProxy/index.js b/src/page/sm-test/TwoWayStreamManagerProxy/index.js
index 5b53e65d..4d95a668 100644
--- a/src/page/sm-test/TwoWayStreamManagerProxy/index.js
+++ b/src/page/sm-test/TwoWayStreamManagerProxy/index.js
@@ -84,8 +84,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
}
function onUnsubscribeFail (message) {
@@ -346,6 +346,9 @@
function unsubscribe () {
return new Promise(function(resolve, reject) {
var subscriber = targetSubscriber;
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(subscriber);
+ }
subscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/sm-test/subscribeBackupStreamSwitchStreammanager/index.js b/src/page/sm-test/subscribeBackupStreamSwitchStreammanager/index.js
index 12983eb4..70dcf731 100644
--- a/src/page/sm-test/subscribeBackupStreamSwitchStreammanager/index.js
+++ b/src/page/sm-test/subscribeBackupStreamSwitchStreammanager/index.js
@@ -163,7 +163,9 @@
document.getElementById(replacement.id).parentNode.classList.remove('hidden');
document.getElementById(replacement.id).parentNode.dataset.activeVideo = replacement.id;
replacement.isActive = true;
- window.exposeSubscriberGlobally(replacement.subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(replacement.subscriber);
+ }
replacement.subscriber.play();
replacement.subscriber.disableStandby();
var options = replacement.subscriber._options;
@@ -219,8 +221,8 @@
new red5prosdk.RTCSubscriber()
.init(config)
.then(function (subscriber) {
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
return subscriber.subscribe();
})
diff --git a/src/page/sm-test/subscribeStreamManager/index.js b/src/page/sm-test/subscribeStreamManager/index.js
index 7f0a5746..3250cb42 100644
--- a/src/page/sm-test/subscribeStreamManager/index.js
+++ b/src/page/sm-test/subscribeStreamManager/index.js
@@ -117,8 +117,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
if (subscriber.getType().toLowerCase() === 'rtc') {
try {
@@ -225,6 +225,9 @@
function unsubscribe () {
return new Promise(function(resolve, reject) {
var subscriber = targetSubscriber
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(subscriber);
+ }
subscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/sm-test/subscribeStreamManagerProxy/index.js b/src/page/sm-test/subscribeStreamManagerProxy/index.js
index 25cf5167..33c3b5ad 100644
--- a/src/page/sm-test/subscribeStreamManagerProxy/index.js
+++ b/src/page/sm-test/subscribeStreamManagerProxy/index.js
@@ -120,8 +120,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
if (subscriber.getType().toLowerCase() === 'rtc') {
try {
@@ -263,6 +263,9 @@
function unsubscribe () {
return new Promise(function(resolve, reject) {
var subscriber = targetSubscriber
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(subscriber);
+ }
subscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/sm-test/subscribeStreamManagerProxyRoundTripAuth/index.js b/src/page/sm-test/subscribeStreamManagerProxyRoundTripAuth/index.js
index 2c919c82..33ae9d39 100644
--- a/src/page/sm-test/subscribeStreamManagerProxyRoundTripAuth/index.js
+++ b/src/page/sm-test/subscribeStreamManagerProxyRoundTripAuth/index.js
@@ -116,8 +116,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
if (subscriber.getType().toLowerCase() === 'rtc') {
try {
@@ -274,6 +274,9 @@
function unsubscribe () {
return new Promise(function(resolve, reject) {
var subscriber = targetSubscriber
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(subscriber);
+ }
subscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/sm-test/subscribeStreamManagerProxyScreenShare/index.js b/src/page/sm-test/subscribeStreamManagerProxyScreenShare/index.js
index 0498fbe1..1384a2a8 100644
--- a/src/page/sm-test/subscribeStreamManagerProxyScreenShare/index.js
+++ b/src/page/sm-test/subscribeStreamManagerProxyScreenShare/index.js
@@ -147,8 +147,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
if (subscriber.getType().toLowerCase() === 'rtc') {
try {
@@ -181,6 +181,9 @@
// Request to unsubscribe.
function unsubscribe (subscriber) {
return new Promise(function(resolve, reject) {
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(subscriber);
+ }
subscriber.unscubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/sm-test/subscribeStreamManagerProxyTranscoderHLS/index.js b/src/page/sm-test/subscribeStreamManagerProxyTranscoderHLS/index.js
index 4446d3a6..e65940c6 100644
--- a/src/page/sm-test/subscribeStreamManagerProxyTranscoderHLS/index.js
+++ b/src/page/sm-test/subscribeStreamManagerProxyTranscoderHLS/index.js
@@ -102,8 +102,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
try {
window.trackBitrate(subscriber.getPeerConnection(), onBitrateUpdate, onResolutionUpdate, true);
@@ -219,6 +219,9 @@
function unsubscribe () {
return new Promise(function(resolve, reject) {
var subscriber = targetSubscriber
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(subscriber);
+ }
subscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/sm-test/subscribeStreamManagerProxyTranscoderRTC/index.js b/src/page/sm-test/subscribeStreamManagerProxyTranscoderRTC/index.js
index 278736ef..7da4d3cf 100644
--- a/src/page/sm-test/subscribeStreamManagerProxyTranscoderRTC/index.js
+++ b/src/page/sm-test/subscribeStreamManagerProxyTranscoderRTC/index.js
@@ -118,8 +118,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
try {
window.trackBitrate(subscriber.getPeerConnection(), onBitrateUpdate, onResolutionUpdate, true);
@@ -252,6 +252,9 @@
function unsubscribe () {
return new Promise(function(resolve, reject) {
var subscriber = targetSubscriber
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(subscriber);
+ }
subscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/sm-test/subscribeStreamManagerProxyTranscoderRTMP/index.js b/src/page/sm-test/subscribeStreamManagerProxyTranscoderRTMP/index.js
index d7737096..45bb646d 100644
--- a/src/page/sm-test/subscribeStreamManagerProxyTranscoderRTMP/index.js
+++ b/src/page/sm-test/subscribeStreamManagerProxyTranscoderRTMP/index.js
@@ -134,8 +134,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
}
function onUnsubscribeFail (message) {
@@ -252,6 +252,9 @@
function unsubscribe () {
return new Promise(function(resolve, reject) {
var subscriber = targetSubscriber
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(subscriber);
+ }
subscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/sm-test/subscribeStreamManagerProxyVP8/index.js b/src/page/sm-test/subscribeStreamManagerProxyVP8/index.js
index 75e2f3b0..ceee792d 100644
--- a/src/page/sm-test/subscribeStreamManagerProxyVP8/index.js
+++ b/src/page/sm-test/subscribeStreamManagerProxyVP8/index.js
@@ -97,8 +97,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
}
function onUnsubscribeFail (message) {
@@ -233,6 +233,9 @@
function unsubscribe () {
return new Promise(function(resolve, reject) {
var subscriber = targetSubscriber
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(subscriber);
+ }
subscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/sm-test/subscribeStreamManagerProxyValidation/index.js b/src/page/sm-test/subscribeStreamManagerProxyValidation/index.js
index 87f2a76a..09d4962f 100644
--- a/src/page/sm-test/subscribeStreamManagerProxyValidation/index.js
+++ b/src/page/sm-test/subscribeStreamManagerProxyValidation/index.js
@@ -184,8 +184,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
if (subscriber.getType().toLowerCase() === 'rtc') {
try {
@@ -266,6 +266,9 @@
function unsubscribe () {
return new Promise(function(resolve, reject) {
var subscriber = targetSubscriber
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(subscriber);
+ }
subscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/test/subscribe/index.js b/src/page/test/subscribe/index.js
index 105b3d23..b7dccb56 100644
--- a/src/page/test/subscribe/index.js
+++ b/src/page/test/subscribe/index.js
@@ -88,8 +88,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
if (subscriber.getType().toLowerCase() === 'rtc') {
try {
@@ -123,6 +123,9 @@
function unsubscribe () {
return new Promise(function(resolve, reject) {
var subscriber = targetSubscriber
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(subscriber);
+ }
subscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/test/subscribeAudioOnly/index.js b/src/page/test/subscribeAudioOnly/index.js
index cb8455a1..a46db755 100644
--- a/src/page/test/subscribeAudioOnly/index.js
+++ b/src/page/test/subscribeAudioOnly/index.js
@@ -113,8 +113,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
if (subscriber.getType().toLowerCase() === 'rtc') {
try {
@@ -136,6 +136,9 @@
function unsubscribe () {
return new Promise(function(resolve, reject) {
var subscriber = targetSubscriber
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(subscriber);
+ }
subscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/test/subscribeAuth/index.js b/src/page/test/subscribeAuth/index.js
index ec2c017b..a752a6cc 100644
--- a/src/page/test/subscribeAuth/index.js
+++ b/src/page/test/subscribeAuth/index.js
@@ -88,8 +88,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
if (subscriber.getType().toLowerCase() === 'rtc') {
try {
@@ -110,6 +110,9 @@
// Request to unsubscribe.
function unsubscribe () {
return new Promise(function(resolve, reject) {
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(targetSubscriber);
+ }
targetSubscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/test/subscribeCall/index.js b/src/page/test/subscribeCall/index.js
index 8fed1186..a64b738d 100644
--- a/src/page/test/subscribeCall/index.js
+++ b/src/page/test/subscribeCall/index.js
@@ -113,8 +113,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
}
function onUnsubscribeFail (message) {
@@ -130,6 +130,9 @@
function unsubscribe () {
return new Promise(function(resolve, reject) {
var subscriber = targetSubscriber
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(subscriber);
+ }
subscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/test/subscribeCluster/index.js b/src/page/test/subscribeCluster/index.js
index 23f11e49..1ef3f5f3 100644
--- a/src/page/test/subscribeCluster/index.js
+++ b/src/page/test/subscribeCluster/index.js
@@ -105,8 +105,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
if (subscriber.getType().toLowerCase() === 'rtc') {
try {
@@ -219,6 +219,9 @@
// Request to unsubscribe.
function unsubscribe () {
return new Promise(function(resolve, reject) {
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(targetSubscriber);
+ }
targetSubscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/test/subscribeHLS/index.js b/src/page/test/subscribeHLS/index.js
index bc7b425e..1687e676 100644
--- a/src/page/test/subscribeHLS/index.js
+++ b/src/page/test/subscribeHLS/index.js
@@ -108,6 +108,9 @@
function unsubscribe () {
return new Promise(function(resolve, reject) {
var subscriber = targetSubscriber
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(subscriber);
+ }
subscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
@@ -138,8 +141,8 @@
targetSubscriber = subscriberImpl
// Subscribe to events.
targetSubscriber.on('*', onSubscriberEvent);
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(targetSubscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(targetSubscriber);
}
return targetSubscriber.subscribe()
})
diff --git a/src/page/test/subscribeImageCapture/index.js b/src/page/test/subscribeImageCapture/index.js
index 721c7d91..8bb787bd 100644
--- a/src/page/test/subscribeImageCapture/index.js
+++ b/src/page/test/subscribeImageCapture/index.js
@@ -103,8 +103,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
if (subscriber.getType().toLowerCase() === 'rtc') {
try {
@@ -137,6 +137,9 @@
// Request to unsubscribe.
function unsubscribe () {
return new Promise(function(resolve, reject) {
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(targetSubscriber);
+ }
targetSubscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/test/subscribeMobile/index.js b/src/page/test/subscribeMobile/index.js
index 095f1b02..549636b3 100644
--- a/src/page/test/subscribeMobile/index.js
+++ b/src/page/test/subscribeMobile/index.js
@@ -86,8 +86,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
if (subscriber.getType().toLowerCase() === 'rtc') {
try {
@@ -121,6 +121,9 @@
function unsubscribe () {
return new Promise(function(resolve, reject) {
var subscriber = targetSubscriber
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(subscriber);
+ }
subscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/test/subscribeReconnect/index.js b/src/page/test/subscribeReconnect/index.js
index 33667a70..945b9e8f 100644
--- a/src/page/test/subscribeReconnect/index.js
+++ b/src/page/test/subscribeReconnect/index.js
@@ -90,8 +90,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
if (subscriber.getType().toLowerCase() === 'rtc') {
try {
@@ -125,6 +125,9 @@
function unsubscribe () {
return new Promise(function(resolve, reject) {
var subscriber = targetSubscriber
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(subscriber);
+ }
subscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/test/subscribeRemoteCall/index.js b/src/page/test/subscribeRemoteCall/index.js
index 10262473..a0d6ba01 100644
--- a/src/page/test/subscribeRemoteCall/index.js
+++ b/src/page/test/subscribeRemoteCall/index.js
@@ -85,8 +85,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
if (subscriber.getType().toLowerCase() === 'rtc') {
try {
@@ -119,6 +119,9 @@
// Request to unsubscribe.
function unsubscribe () {
return new Promise(function(resolve, reject) {
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(targetSubscriber);
+ }
targetSubscriber.unsubscribe()
.then(function () {
targetSubscriber.off(red5prosdk.SubscriberEventTypes.SUBSCRIBE_SEND_INVOKE, sendClientHandler);
diff --git a/src/page/test/subscribeRetryOnInvalidName/index.js b/src/page/test/subscribeRetryOnInvalidName/index.js
index d26681fb..538cf87d 100644
--- a/src/page/test/subscribeRetryOnInvalidName/index.js
+++ b/src/page/test/subscribeRetryOnInvalidName/index.js
@@ -123,8 +123,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
if (subscriber.getType().toLowerCase() === 'rtc') {
try {
@@ -157,6 +157,9 @@
// Request to unsubscribe.
function unsubscribe () {
return new Promise(function(resolve, reject) {
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(targetSubscriber);
+ }
targetSubscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/test/subscribeRoundTripAuth/index.js b/src/page/test/subscribeRoundTripAuth/index.js
index 2b774724..445fa35e 100644
--- a/src/page/test/subscribeRoundTripAuth/index.js
+++ b/src/page/test/subscribeRoundTripAuth/index.js
@@ -90,8 +90,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
if (subscriber.getType().toLowerCase() === 'rtc') {
try {
@@ -112,6 +112,9 @@
// Request to unsubscribe.
function unsubscribe () {
return new Promise(function(resolve, reject) {
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(targetSubscriber);
+ }
targetSubscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/test/subscribeScreenShare/index.js b/src/page/test/subscribeScreenShare/index.js
index ca60de97..7688e4f1 100644
--- a/src/page/test/subscribeScreenShare/index.js
+++ b/src/page/test/subscribeScreenShare/index.js
@@ -95,8 +95,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
if (subscriber.getType().toLowerCase() === 'rtc') {
try {
@@ -129,6 +129,9 @@
// Request to unsubscribe.
function unsubscribe (subscriber) {
return new Promise(function(resolve, reject) {
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(subscriber);
+ }
subscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/test/subscribeSharedObject/index.js b/src/page/test/subscribeSharedObject/index.js
index 2d06eda2..03a36e46 100644
--- a/src/page/test/subscribeSharedObject/index.js
+++ b/src/page/test/subscribeSharedObject/index.js
@@ -96,8 +96,8 @@
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
establishSharedObject(subscriber);
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
if (subscriber.getType().toLowerCase() === 'rtc') {
try {
@@ -183,6 +183,9 @@
so.close();
}
return new Promise(function(resolve, reject) {
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(targetSubscriber);
+ }
targetSubscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/test/subscribeVideoMute/index.js b/src/page/test/subscribeVideoMute/index.js
index 43ae4e01..d4e80db6 100644
--- a/src/page/test/subscribeVideoMute/index.js
+++ b/src/page/test/subscribeVideoMute/index.js
@@ -96,8 +96,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
if (subscriber.getType().toLowerCase() === 'rtc') {
try {
@@ -131,6 +131,9 @@
function unsubscribe () {
return new Promise(function(resolve, reject) {
var subscriber = targetSubscriber
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(subscriber);
+ }
subscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/test/subscribevp8/index.js b/src/page/test/subscribevp8/index.js
index d7a610f1..b65ebcd8 100644
--- a/src/page/test/subscribevp8/index.js
+++ b/src/page/test/subscribevp8/index.js
@@ -84,8 +84,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
if (subscriber.getType().toLowerCase() === 'rtc') {
try {
@@ -119,6 +119,9 @@
function unsubscribe () {
return new Promise(function(resolve, reject) {
var subscriber = targetSubscriber
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(subscriber);
+ }
subscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/page/test/twoWay/index.js b/src/page/test/twoWay/index.js
index ac3a532e..04f8e11d 100644
--- a/src/page/test/twoWay/index.js
+++ b/src/page/test/twoWay/index.js
@@ -83,8 +83,8 @@
}
function onSubscribeSuccess (subscriber) {
console.log('[Red5ProSubsriber] Subscribe Complete.');
- if (window.exposeSubscriberGlobally) {
- window.exposeSubscriberGlobally(subscriber);
+ if (window.handleSubscriberSetupGlobally) {
+ window.handleSubscriberSetupGlobally(subscriber);
}
}
function onUnsubscribeFail (message) {
@@ -324,6 +324,9 @@
function unsubscribe () {
return new Promise(function(resolve, reject) {
var subscriber = targetSubscriber;
+ if (window.handleSubscriberTeardownGlobally) {
+ window.handleSubscriberTeardownGlobally(subscriber);
+ }
subscriber.unsubscribe()
.then(function () {
targetSubscriber.off('*', onSubscriberEvent);
diff --git a/src/template/partial/body-scripts.hbs b/src/template/partial/body-scripts.hbs
index 5ed6ff8a..36b8153a 100644
--- a/src/template/partial/body-scripts.hbs
+++ b/src/template/partial/body-scripts.hbs
@@ -41,5 +41,24 @@
testBody.parentNode.insertBefore(node, testBody);
}
+ // Handle all successful setup of subscribers here to forward on to other operations.
+ window.handleSubscriberSetupGlobally = function (subscriber) {
+ if (window.exposeSubscriberGlobally) {
+ window.exposeSubscriberGlobally(subscriber);
+ }
+ if (subscriber.getType().toLowerCase() === 'rtc') {
+ if (window.red5proMonitorGetStats) {
+ var opt = subscriber.getOptions();
+ window.red5proMonitorGetStats(opt.subscriptionId, opt.streamName, opt.mediaElementId, subscriber.getPeerConnection());
+ }
+ }
+ };
+ // Handle any teardown of successfully setup subscribers.
+ window.handleSubscriberTeardownGlobally = function (subscriber) {
+ if (window.red5proUnmonitorGetStats) {
+ window.red5proUnmonitorGetStats(subscriber.getOptions().subscriptionId);
+ }
+ }
+
})(this);
diff --git a/src/template/partial/header-scripts.hbs b/src/template/partial/header-scripts.hbs
index d331bf0f..41e3de6e 100644
--- a/src/template/partial/header-scripts.hbs
+++ b/src/template/partial/header-scripts.hbs
@@ -2,4 +2,5 @@
+
diff --git a/static/script/automation-testing.js b/static/script/automation-testing.js
new file mode 100644
index 00000000..83b79aa4
--- /dev/null
+++ b/static/script/automation-testing.js
@@ -0,0 +1,158 @@
+(function (window) {
+
+ // Should be loaded from red5pro-utils.js
+ if (!window.query) return;
+
+ var reportClientStats = !!window.query('automation');
+ var sampleTime = window.query('sampleTime') ? parseInt(window.query('sampleTime'), 10) : 2000;
+ sampleTime = isNaN(sampleTime) ? 2000 : sampleTime;
+ var inspectorEndpoint = window.query('inspectorBaseURL') ? window.query('inspectorBaseURL') : window.location.origin;
+
+ // If we arent concerned with automation reports, forget it.
+ if (!reportClientStats) return;
+
+ // [Script inject]]
+ var hasStatsScript = false;
+ var muazkhans_getstats = 'https://cdn.webrtc-experiment.com/getStats.min.js';
+ var loadFn = function () {
+ hasStatsScript = true;
+ var pending = pendingMonitors ? Object.keys(pendingMonitors) : [];
+ var i = pending.length;
+ while (--i > -1) {
+ var id = pending[i];
+ var obj = pendingMonitors[id];
+ monitorGetStats(id, obj.name, obj.elementId, obj.connection);
+ delete pendingMonitors[id];
+ }
+ pendingMonitors = undefined;
+ }
+ var head = document.getElementsByTagName('head')[0];
+ var script = document.createElement('script');
+ script.type = 'text/javascript';
+ script.src = muazkhans_getstats;
+ script.onreadystatechange = loadFn;
+ script.onload = loadFn;
+ head.appendChild(script);
+ // [[Script inject]
+
+ var monitors = [];
+ var pendingMonitors = {};
+
+ // The data to pluck from getStats results.
+ var dataMap = {
+ 'ssrc': [ // Chrome
+ 'framesDecoded',
+ 'googDecodeMs',
+ 'googMaxDecodeMs',
+ 'googCurrentDelayMs',
+ 'googFirstFrameReceivedToDecodedMs',
+ 'googRenderDelayMs',
+ 'googFrameRateReceived'
+ ],
+ 'inbound-rtp': [ // Firefox :/
+ 'framesDecoded'
+ ],
+ 'track': [ // Safari :/
+ 'framesDecoded'
+ ]
+ };
+
+ var isValidResult = function (result) {
+ if (result.type === 'inbound-rtp' && result.kind !== 'video') {
+ // Audio data in Firefox.
+ return false;
+ } else if (result.type === 'track') {
+ // Audio track in Safari.
+ return !(result.frameWidth === 0 && result.frameHeight === 0);
+ }
+ return true;
+ };
+ var gatherDataFromResults = function (resultsArr) {
+ var i = resultsArr.length, j;
+ var result, resultKeys;
+ var data;
+ var key;
+ var payload = {};
+ while (--i > -1) {
+ result = resultsArr[i];
+ if (dataMap.hasOwnProperty(result.type)) {
+ if (!isValidResult(result)) {
+ continue;
+ }
+ resultKeys = Object.keys(result);
+ data = dataMap[result.type];
+ j = resultKeys.length;
+ while (--j > -1) {
+ key = resultKeys[j];
+ if (data.indexOf(key) > -1) {
+ payload[key] = parseInt(result[key], 10);
+ }
+ }
+ }
+ }
+ return payload;
+ };
+
+ var postResults = function (subscriberId, streamName, streamTime, result) {
+ var results = result.results;
+ var data = gatherDataFromResults(results);
+ data = Object.assign(data, {
+ id: subscriberId,
+ event: 'clientStats',
+ streamName: streamName,
+ streamTime: streamTime
+ });
+ if (typeof window.adapter !== 'undefined') {
+ data = Object.assign(data, window.adapter.browserDetails);
+ }
+ console.log(JSON.stringify(data, null, 2));
+ var dataJSON = encodeURIComponent(JSON.stringify(data));
+ fetch(inspectorEndpoint + '/inspector/streamapi.js?clientstats=' + dataJSON, {
+ method: 'post',
+ headers: {
+ 'Accept': 'application/json, text/plain, */*',
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify({clientstats: data})
+ })
+ .then(function (res) { // eslint-disable-line no-unused-vars
+ // console.log(res)
+ })
+ .catch(function (error) {
+ console.error(error);
+ });
+ };
+
+ var startMonitor = function (id, name, elementId, connection) {
+ window.getStats(connection, function (result) {
+ if (monitors.indexOf(id) <= -1) {
+ return;
+ }
+ var streamTime = document.getElementById(elementId).currentTime*1000;
+ postResults(id, name, streamTime, result);
+ console.log(result);
+ }, sampleTime);
+ };
+ var monitorGetStats = function (id, name, elementId, connection) {
+ if (!hasStatsScript) {
+ pendingMonitors[id] = {
+ name: name,
+ elementId: elementId,
+ connection: connection
+ };
+ return;
+ }
+ monitors.push(id);
+ startMonitor(id, name, elementId, connection);
+ };
+ var unmonitorGetStats = function (id) {
+ var index = monitors.indexOf(id);
+ if (index > -1) {
+ monitors.splice(index, 1);
+ }
+ };
+
+ window.red5proUnmonitorGetStats = unmonitorGetStats;
+ window.red5proMonitorGetStats = monitorGetStats;
+
+})(window);