Fix status info in JS player

This commit is contained in:
Alexey Khit
2023-01-08 21:05:50 +03:00
parent f9cb6fd670
commit 4cd9757e53
+28 -18
View File
@@ -1,19 +1,23 @@
import {VideoRTC} from "./video-rtc.js"; import {VideoRTC} from "./video-rtc.js";
class VideoStream extends VideoRTC { class VideoStream extends VideoRTC {
constructor() { set divMode(value) {
super(); this.querySelector(".mode").innerText = value;
this.querySelector(".status").innerText = "";
}
/** @type {HTMLDivElement} */ set divError(value) {
this.divMode = null; const state = this.querySelector(".mode").innerText;
/** @type {HTMLDivElement} */ if (state !== "loading") return;
this.divStatus = null; this.querySelector(".mode").innerText = "error";
this.querySelector(".status").innerText = value;
} }
/** /**
* Custom GUI * Custom GUI
*/ */
oninit() { oninit() {
console.debug("stream.oninit");
super.oninit(); super.oninit();
this.innerHTML = ` this.innerHTML = `
@@ -36,35 +40,36 @@ class VideoStream extends VideoRTC {
</div> </div>
`; `;
this.divStatus = this.querySelector(".status");
this.divMode = this.querySelector(".mode");
const info = this.querySelector(".info") const info = this.querySelector(".info")
this.insertBefore(this.video, info); this.insertBefore(this.video, info);
} }
onconnect() { onconnect() {
console.debug("stream.onconnect");
const result = super.onconnect(); const result = super.onconnect();
if (result) { if (result) this.divMode = "loading";
this.divMode.innerText = "loading";
}
return result; return result;
} }
ondisconnect() {
console.debug("stream.ondisconnect");
super.ondisconnect();
}
onopen() { onopen() {
console.debug("stream.onopen");
const result = super.onopen(); const result = super.onopen();
this.onmessage["stream"] = msg => { this.onmessage["stream"] = msg => {
console.debug("stream.onmessge", msg);
switch (msg.type) { switch (msg.type) {
case "error": case "error":
this.divMode.innerText = "error"; this.divError = msg.value;
this.divStatus.innerText = msg.value;
break; break;
case "mse": case "mse":
case "mp4": case "mp4":
case "mjpeg": case "mjpeg":
this.divMode.innerText = msg.type.toUpperCase(); this.divMode = msg.type.toUpperCase();
this.divStatus.innerText = "";
break; break;
} }
} }
@@ -72,12 +77,17 @@ class VideoStream extends VideoRTC {
return result; return result;
} }
onclose() {
console.debug("stream.onclose");
return super.onclose();
}
onpcvideo(ev) { onpcvideo(ev) {
console.debug("stream.onpcvideo");
super.onpcvideo(ev); super.onpcvideo(ev);
if (this.pcState !== WebSocket.CLOSED) { if (this.pcState !== WebSocket.CLOSED) {
this.divMode.innerText = "RTC"; this.divMode = "RTC";
this.divStatus.innerText = "";
} }
} }
} }