stormcloud-video-player 0.8.37 → 0.8.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/stormcloud-vp.min.js +2 -2
- package/lib/index.cjs +76 -23
- package/lib/index.cjs.map +1 -1
- package/lib/index.js +76 -23
- package/lib/index.js.map +1 -1
- package/lib/player/AdBreakOrchestrator.cjs +69 -16
- package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
- package/lib/player/AdConfigManager.cjs +69 -16
- package/lib/player/AdConfigManager.cjs.map +1 -1
- package/lib/player/HlsEngine.cjs +1 -1
- package/lib/player/HlsEngine.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.cjs +71 -18
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.cjs +71 -18
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/index.cjs +71 -18
- package/lib/players/index.cjs.map +1 -1
- package/lib/sdk/hlsAdPlayer.cjs +1 -1
- package/lib/sdk/hlsAdPlayer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.cjs +71 -18
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/utils/mqttClient.cjs +74 -21
- package/lib/utils/mqttClient.cjs.map +1 -1
- package/lib/utils/tracking.cjs +69 -16
- package/lib/utils/tracking.cjs.map +1 -1
- package/package.json +1 -1
- package/rollup.config.js +6 -0
package/lib/index.cjs
CHANGED
|
@@ -1337,7 +1337,7 @@ function createHlsAdPlayer(contentVideo, options) {
|
|
|
1337
1337
|
adHls.destroy();
|
|
1338
1338
|
}
|
|
1339
1339
|
adHls = new import_hls.default({
|
|
1340
|
-
enableWorker:
|
|
1340
|
+
enableWorker: true,
|
|
1341
1341
|
lowLatencyMode: false
|
|
1342
1342
|
});
|
|
1343
1343
|
adHls.loadSource(mediaFile.url);
|
|
@@ -2110,8 +2110,17 @@ function buildPlayerTopic(licenseKey, channel) {
|
|
|
2110
2110
|
// src/utils/mqttClient.ts
|
|
2111
2111
|
var import_mqtt = __toESM(require("mqtt"), 1);
|
|
2112
2112
|
var LOG = "[StormcloudVideoPlayer][MQTT]";
|
|
2113
|
+
var KEEPALIVE_SECONDS = 30;
|
|
2114
|
+
var CONNECT_TIMEOUT_MS = 1e4;
|
|
2115
|
+
var RECONNECT_BASE_MS = 5e3;
|
|
2116
|
+
var RECONNECT_MAX_MS = 6e4;
|
|
2117
|
+
var MAX_RECONNECT_ATTEMPTS = 8;
|
|
2118
|
+
var COOLDOWN_MS = 10 * 6e4;
|
|
2113
2119
|
var client = null;
|
|
2114
2120
|
var status = "disconnected";
|
|
2121
|
+
var reconnectAttempts = 0;
|
|
2122
|
+
var reconnectTimer = null;
|
|
2123
|
+
var stopped = false;
|
|
2115
2124
|
function getMQTTStatus() {
|
|
2116
2125
|
return status;
|
|
2117
2126
|
}
|
|
@@ -2125,8 +2134,45 @@ function configureMQTT(overrides) {
|
|
|
2125
2134
|
applyMQTTConfig(overrides);
|
|
2126
2135
|
disconnectMQTT();
|
|
2127
2136
|
}
|
|
2128
|
-
function
|
|
2129
|
-
if (
|
|
2137
|
+
function clearReconnectTimer() {
|
|
2138
|
+
if (reconnectTimer) {
|
|
2139
|
+
clearTimeout(reconnectTimer);
|
|
2140
|
+
reconnectTimer = null;
|
|
2141
|
+
}
|
|
2142
|
+
}
|
|
2143
|
+
function teardownClient() {
|
|
2144
|
+
if (client) {
|
|
2145
|
+
try {
|
|
2146
|
+
client.removeAllListeners();
|
|
2147
|
+
client.end(true);
|
|
2148
|
+
} catch (unused) {}
|
|
2149
|
+
client = null;
|
|
2150
|
+
}
|
|
2151
|
+
}
|
|
2152
|
+
function scheduleReconnect() {
|
|
2153
|
+
if (stopped || !isMQTTEnabled() || reconnectTimer) return;
|
|
2154
|
+
if (reconnectAttempts >= MAX_RECONNECT_ATTEMPTS) {
|
|
2155
|
+
console.warn("".concat(LOG, " giving up after ").concat(reconnectAttempts, " attempts; cooling down for ").concat(COOLDOWN_MS / 6e4, "m"));
|
|
2156
|
+
teardownClient();
|
|
2157
|
+
status = "disconnected";
|
|
2158
|
+
reconnectTimer = setTimeout(function() {
|
|
2159
|
+
reconnectTimer = null;
|
|
2160
|
+
reconnectAttempts = 0;
|
|
2161
|
+
openConnection();
|
|
2162
|
+
}, COOLDOWN_MS);
|
|
2163
|
+
return;
|
|
2164
|
+
}
|
|
2165
|
+
var delay = Math.min(RECONNECT_MAX_MS, RECONNECT_BASE_MS * Math.pow(2, reconnectAttempts));
|
|
2166
|
+
var jitter = Math.floor(Math.random() * 1e3);
|
|
2167
|
+
reconnectAttempts += 1;
|
|
2168
|
+
reconnectTimer = setTimeout(function() {
|
|
2169
|
+
reconnectTimer = null;
|
|
2170
|
+
openConnection();
|
|
2171
|
+
}, delay + jitter);
|
|
2172
|
+
}
|
|
2173
|
+
function openConnection() {
|
|
2174
|
+
if (stopped || !isMQTTEnabled()) return;
|
|
2175
|
+
teardownClient();
|
|
2130
2176
|
var url = buildMQTTBrokerUrl();
|
|
2131
2177
|
status = "connecting";
|
|
2132
2178
|
var clientId = "stormcloud-vp-".concat(Math.random().toString(36).slice(2, 9));
|
|
@@ -2135,41 +2181,48 @@ function initMQTTClient() {
|
|
|
2135
2181
|
clientId: clientId,
|
|
2136
2182
|
username: mqttConfig.username,
|
|
2137
2183
|
password: mqttConfig.password,
|
|
2138
|
-
keepalive:
|
|
2184
|
+
keepalive: KEEPALIVE_SECONDS,
|
|
2139
2185
|
clean: true,
|
|
2140
|
-
reconnectPeriod:
|
|
2141
|
-
connectTimeout:
|
|
2142
|
-
queueQoSZero: false
|
|
2186
|
+
reconnectPeriod: 0,
|
|
2187
|
+
connectTimeout: CONNECT_TIMEOUT_MS,
|
|
2188
|
+
queueQoSZero: false,
|
|
2189
|
+
reschedulePings: true
|
|
2143
2190
|
});
|
|
2144
2191
|
} catch (err) {
|
|
2145
2192
|
status = "error";
|
|
2146
2193
|
console.warn("".concat(LOG, " connect() threw:"), err);
|
|
2194
|
+
scheduleReconnect();
|
|
2147
2195
|
return;
|
|
2148
2196
|
}
|
|
2149
2197
|
client.on("connect", function() {
|
|
2150
2198
|
status = "connected";
|
|
2199
|
+
reconnectAttempts = 0;
|
|
2200
|
+
clearReconnectTimer();
|
|
2151
2201
|
console.info("".concat(LOG, " connected to ").concat(url));
|
|
2152
2202
|
});
|
|
2153
|
-
client.on("reconnect", function() {
|
|
2154
|
-
status = "connecting";
|
|
2155
|
-
console.info("".concat(LOG, " reconnecting…"));
|
|
2156
|
-
});
|
|
2157
2203
|
client.on("offline", function() {
|
|
2158
|
-
status = "disconnected";
|
|
2204
|
+
if (status === "connected") status = "disconnected";
|
|
2159
2205
|
console.warn("".concat(LOG, " offline"));
|
|
2206
|
+
scheduleReconnect();
|
|
2160
2207
|
});
|
|
2161
2208
|
client.on("error", function(err) {
|
|
2162
2209
|
status = "error";
|
|
2163
2210
|
console.warn("".concat(LOG, " error:"), err.message);
|
|
2211
|
+
scheduleReconnect();
|
|
2164
2212
|
});
|
|
2165
2213
|
client.on("close", function() {
|
|
2166
|
-
if (status === "connected")
|
|
2167
|
-
|
|
2168
|
-
}
|
|
2214
|
+
if (status === "connected") status = "disconnected";
|
|
2215
|
+
scheduleReconnect();
|
|
2169
2216
|
});
|
|
2170
2217
|
}
|
|
2218
|
+
function initMQTTClient() {
|
|
2219
|
+
if (client || !isMQTTEnabled()) return;
|
|
2220
|
+
stopped = false;
|
|
2221
|
+
reconnectAttempts = 0;
|
|
2222
|
+
openConnection();
|
|
2223
|
+
}
|
|
2171
2224
|
function ensureMQTTClient() {
|
|
2172
|
-
if (isMQTTEnabled() && !client) {
|
|
2225
|
+
if (isMQTTEnabled() && !client && !reconnectTimer) {
|
|
2173
2226
|
initMQTTClient();
|
|
2174
2227
|
}
|
|
2175
2228
|
}
|
|
@@ -2178,7 +2231,7 @@ function publishMQTT(topic, payload) {
|
|
|
2178
2231
|
return false;
|
|
2179
2232
|
}
|
|
2180
2233
|
ensureMQTTClient();
|
|
2181
|
-
if (!client) {
|
|
2234
|
+
if (!client || !client.connected) {
|
|
2182
2235
|
return false;
|
|
2183
2236
|
}
|
|
2184
2237
|
try {
|
|
@@ -2192,11 +2245,11 @@ function publishMQTT(topic, payload) {
|
|
|
2192
2245
|
}
|
|
2193
2246
|
}
|
|
2194
2247
|
function disconnectMQTT() {
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2248
|
+
stopped = true;
|
|
2249
|
+
clearReconnectTimer();
|
|
2250
|
+
teardownClient();
|
|
2251
|
+
reconnectAttempts = 0;
|
|
2252
|
+
status = "disconnected";
|
|
2200
2253
|
}
|
|
2201
2254
|
// src/utils/vastEnvironmentSignals.ts
|
|
2202
2255
|
var AIRY_ANDROID_APP_ID = "com.freeairytv.android";
|
|
@@ -6487,7 +6540,7 @@ var HlsEngine = /*#__PURE__*/ function() {
|
|
|
6487
6540
|
value: function setupHls() {
|
|
6488
6541
|
var _this = this;
|
|
6489
6542
|
this.hls = new import_hls2.default(_object_spread_props(_object_spread({
|
|
6490
|
-
enableWorker:
|
|
6543
|
+
enableWorker: true,
|
|
6491
6544
|
backBufferLength: 30,
|
|
6492
6545
|
liveDurationInfinity: true,
|
|
6493
6546
|
lowLatencyMode: !!this.config.lowLatencyMode,
|