xushiting 3 gadi atpakaļ
vecāks
revīzija
0575f7ee7a

+ 17 - 2
dist/index.html

@@ -32,7 +32,9 @@
     <script src="./libs/socket.2.3.js"></script>
     <script src="./libs/events.js"></script>
     <script src="./libs/axios.min.js"></script>
-
+    <script src="./libs/VisibilityChangeHandler.js"></script>
+    <script src="./libs/decoder.js"></script>
+    
     <!-- <script src="./webrtc//adapter-7.4.0.min.js"></script>
     <script src="./webrtc/srs.sdk.js"></script> -->
     <link rel="stylesheet" href="./css/index.cb1a6e05.css" />
@@ -271,6 +273,19 @@ new Vector3(-1 * Math.PI * i.pitch / 180,Math.PI * i.yaw / 180 - Math.PI * 27 /
     [n, s]
 }
 
+const WASM_Version = "h264"
+  , DECODER_VERSION = "v0.9.3"
+  , WASM_URLS = {
+    h264: "https://static.xverse.cn/wasm/v15/lib_ff264dec_no_idb_with_wasm_tbundle.js?tbundle=tmeland_base",
+    xv265: "https://static.xverse.cn/wasm/codec-release/h265-dec-sw-wasm/v-0-9-1/libxv265dec.js",
+    h265: ""
+}
+  , STUCK_STAGE_GOOD = 45
+  , STUCK_STAGE_WELL = 85
+  , STUCK_STAGE_FAIR = 125
+  , STUCK_STAGE_BAD = 165
+  , DECODER_PASSIVE_JITTER = 0;
+
     var De = Object.defineProperty
     , Ne = Object.defineProperties;
     var we = Object.getOwnPropertyDescriptors;
@@ -308,7 +323,7 @@ new Vector3(-1 * Math.PI * i.pitch / 180,Math.PI * i.yaw / 180 - Math.PI * 27 /
     <div id="root">
         <div class = "App">
             <canvas id = "canvas" class = "stream unselect">
-                
+
             </canvas>
         </div>
         <div class="debug_control_btns">

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 2311 - 188
dist/js/index.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
dist/js/index.js.map


+ 32 - 0
dist/libs/VisibilityChangeHandler.js

@@ -0,0 +1,32 @@
+function VisibilityChangeHandler() {
+    this.subscribers = [],
+    this.bindFunc = void 0,
+    this.id = 1,
+    this.addListener()
+}
+VisibilityChangeHandler.prototype = {
+    subscribe(i) {
+        if (!i)
+            return;
+        const e = ++this.id
+          , t = {
+            id: e,
+            handler: i
+        };
+        return this.subscribers.push(t),
+        ()=>{
+            this.subscribers = this.subscribers.filter(n=>n.id == e)
+        }
+    },
+    destroy() {
+        !this.bindFunc || (document.hidden !== void 0 ? document.removeEventListener("visibilitychange", this.bindFunc, !1) : document.webkitHidden && document.removeEventListener("webkitvisibilitychange", this.bindFunc, !1))
+    },
+    broadcast(i) {
+        this.subscribers.forEach(e=>e.handler(i))
+    },
+    addListener() {
+        document.hidden !== void 0 ? (this.bindFunc = ()=>this.broadcast(document.hidden),
+        document.addEventListener("visibilitychange", this.bindFunc, !1)) : document.webkitHidden && (this.bindFunc = ()=>this.broadcast(document.webkitHidden),
+        document.addEventListener("webkitvisibilitychange", this.bindFunc, !1))
+    }
+};

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1372 - 0
dist/libs/decoder.js


+ 34 - 1
src/CircularArray.js

@@ -1,4 +1,37 @@
-class CircularArray {
+function add(i, e) {
+    return e == -1 && (e = 0),
+    i + e
+}
+
+function max(i, e) {
+    return Math.max(i, e)
+}
+
+function count_sd(i, e) {
+    function t(r, n) {
+        let o = 0;
+        return n == -1 ? o = 0 : o = (n - e) * (n - e),
+        r + o
+    }
+    return Math.sqrt(i.reduce(t, 0) / i.reduce(count_valid, 0)) || 0
+}
+
+function count_valid(i, e) {
+    let t = 0;
+    return e != -1 && (t = 1),
+    i + t
+}
+
+function count_less(i, e) {
+    function t(r, n) {
+        let o = 0;
+        return n != -1 && n < e && (o = 1),
+        r + o
+    }
+    return i.reduce(t, 0)
+}
+
+export default class CircularArray {
     constructor(e, t, r) {
         this.sum = 0,
         this.incomingSum = 0,

+ 2 - 0
src/Error/InitConfigTimeoutError.js

@@ -1,3 +1,5 @@
+import XverseError from "./XverseError.js"
+
 export default class InitConfigTimeoutError extends XverseError {
     constructor(e) {
         super(1009, e || "\u914D\u7F6E\u521D\u59CB\u5316\u8D85\u65F6")

+ 2 - 0
src/Error/InitNetworkTimeoutError.js

@@ -1,4 +1,6 @@
 
+import XverseError from "./XverseError.js"
+
 export default class InitNetworkTimeoutError extends XverseError {
     constructor(e) {
         super(1007, e || "\u7F51\u7EDC\u521D\u59CB\u5316\u8D85\u65F6")

+ 96 - 22
src/NetworkController.js

@@ -3,7 +3,32 @@ import {logger} from "./Logger.js"
 import Socket from "./Socket.js"
 import Rtcp from "./Rtcp.js"
 import NetworkMonitor from "./NetworkMonitor.js"
+import Stream from "./Stream.js"
 
+var workerSourceCode = `onmessage = function (event) {
+    const data = event.data
+    if (!data) return
+  
+    if (data.type === 'start') {
+      const startTime = Date.now()
+      const request = new XMLHttpRequest()
+      request.open('GET', data.url)
+      try {
+        request.send()
+      } catch (error) {
+        console.error(error)
+      }
+      request.addEventListener('readystatechange', () => {
+        if (request.readyState == 4) {
+          if (request.status == 200) {
+            postMessage(Date.now() - startTime)
+          }
+        }
+      })
+    }
+  }
+  `;
+  
 export default class NetworkController extends EventEmitter {
     constructor(e) {
         super();
@@ -22,26 +47,27 @@ export default class NetworkController extends EventEmitter {
             logger.info("network changed, online:", this._networkMonitor.isOnline),
             this._state === "disconnected" && this._networkMonitor.isOnline && (logger.info("network back to online, try to reconnect"),
             this.reconnect())
-        }
-        ),
-        checkNetworkQuality(this.room.currentNetworkOptions.wsServerUrl),
-        this._networkMonitor.start(),
+        });
+
+        this.checkNetworkQuality(this.room.currentNetworkOptions.wsServerUrl);
+        this._networkMonitor.start();
+
         new VisibilityChangeHandler().subscribe(r=>{
-            var n, o;
-            r ? ((o = this.room.stats) == null || o.disable(),
-            logger.infoAndReportMeasurement({
-                metric: "pageHide",
-                startTime: Date.now()
-            })) : ((n = this.room.stats) == null || n.enable(),
-            logger.infoAndReportMeasurement({
-                metric: "pageShow",
-                startTime: Date.now(),
-                extra: {
-                    state: this._state
-                }
-            }),
-            this._state === "disconnected" && this.reconnect())
-        }
+                var n, o;
+                r ? ((o = this.room.stats) == null || o.disable(),
+                logger.infoAndReportMeasurement({
+                    metric: "pageHide",
+                    startTime: Date.now()
+                })) : ((n = this.room.stats) == null || n.enable(),
+                logger.infoAndReportMeasurement({
+                    metric: "pageShow",
+                    startTime: Date.now(),
+                    extra: {
+                        state: this._state
+                    }
+                }),
+                this._state === "disconnected" && this.reconnect())
+            }
         )
     }
 
@@ -84,10 +110,10 @@ export default class NetworkController extends EventEmitter {
         return this.connect(e).then(this.startGame)
     }
     async connect(e=!1) {
-        return this.room.updateCurrentNetworkOptions({
+        this.room.updateCurrentNetworkOptions({
             reconnect: e
-        }),
-        new Promise((t,r)=>{
+        });
+        return new Promise((t,r)=>{
             this.rtcp.on("rtcConnected", ()=>{
                 this.setState("connected"),
                 t()
@@ -220,4 +246,52 @@ export default class NetworkController extends EventEmitter {
         this.socket.quit(),
         this.sendRtcData(t)
     }
+
+    checkNetworkQuality(i) {
+        let worker = null
+        if (!i)
+            return;
+        const e = Date.now();
+        if (this.pingOthers("https://www.baidu.com", function(t, r) {
+            logger.infoAndReportMeasurement({
+                metric: "baiduRtt",
+                group: "http",
+                value: r,
+                startTime: e
+            })
+        }),
+        !worker) {
+            const t = new Blob([workerSourceCode],{
+                type: "application/javascript"
+            });
+            worker = new Worker(URL.createObjectURL(t)),
+            worker.onmessage = function(r) {
+                logger.infoAndReportMeasurement({
+                    metric: "workerRtt",
+                    group: "http",
+                    startTime: e,
+                    value: r.data
+                })
+            }
+        }
+    }
+    pingOthers(i, e) {
+        let t = !1;
+        const r = new Image;
+        r.onload = o,
+        r.onerror = a;
+        const n = Date.now();
+        function o(l) {
+            t = !0,
+            s()
+        }
+        function a(l) {}
+        function s() {
+            const l = Date.now() - n;
+            if (typeof e == "function")
+                return t ? e(null, l) : (console.error("error loading resource"),
+                e("error", l))
+        }
+        r.src = i + "/favicon.ico?" + +new Date
+    }
 }

+ 2 - 1
src/Rtcp.js

@@ -1,6 +1,7 @@
 import {logger} from "./Logger.js"
 import Workers from "./Workers.js"
-
+import Heartbeat from "./Heartbeat.js"
+ 
 export default class Rtcp extends EventEmitter {
     constructor(e) {
         super();

+ 3 - 0
src/Socket.js

@@ -1,5 +1,8 @@
 import {logger} from "./Logger.js"
 import Heartbeat from "./Heartbeat.js"
+import Timeout from "./Timeout.js"
+import InitNetworkTimeoutError from "./error/InitNetworkTimeoutError.js"
+import {reporter} from "./Reporter.js"
 
 export default class Socket extends EventEmitter {
     constructor(e) {

+ 19 - 14
src/Stream.js

@@ -1,9 +1,18 @@
-const log$j = new Logger("stream");
-class Stream {
+import {logger} from "./Logger.js"
+
+export default class Stream {
     constructor(e) {
-        E(this, "el");
-        E(this, "_streamPlayTimer", null);
-        E(this, "play", ()=>new Promise((e,t)=>{
+        this.el = null
+        this._streamPlayTimer = null
+        if (!e) {
+            this.el = this.createVideoElement();
+            return
+        }
+        this.el = e
+    }
+
+    play(){
+        return new Promise((e,t)=>{
             this._streamPlayTimer = new Timeout(()=>{
                 t(new InternalError("Stream play timeout"))
             }
@@ -11,25 +20,21 @@ class Stream {
             this.el && this.el.play().then(()=>{
                 var r;
                 e(),
-                log$j.info("Media can autoplay"),
+                logger.info("Media can autoplay"),
                 (r = this._streamPlayTimer) == null || r.clear()
             }
             ).catch(r=>{
                 var n;
-                log$j.error("Media Failed to autoplay"),
-                log$j.error(r),
+                logger.error("Media Failed to autoplay"),
+                logger.error(r),
                 t(new InternalError("Media Failed to autoplay")),
                 (n = this._streamPlayTimer) == null || n.clear()
             }
             )
         }
-        ));
-        if (!e) {
-            this.el = this.createVideoElement();
-            return
-        }
-        this.el = e
+        )
     }
+
     createVideoElement() {
         const e = document.createElement("video");
         return e.muted = !0,

+ 3 - 1
src/Workers.js

@@ -11,6 +11,8 @@ const USER_ID = "987412365"
   , COS_PREFIX = "error-bitstreams-auto-uploaded-from-application/"
   , FRAME_COMPOSE_LENGTH = 5;
 
+import CircularArray from "./CircularArray.js"
+
 export default class Workers {
     constructor(e, t) {
         this.rtcp = e,
@@ -171,7 +173,7 @@ export default class Workers {
         this._rtcp = e
     }
     registerLogger(e) {
-        defaultLogger = e
+        //defaultLogger = e
     }
     registerFunction(e, t) {
         this.functionMap.set(e, t)

+ 2 - 0
src/Xverse_Room.js

@@ -14,6 +14,8 @@ import TimeoutError from "./error/TimeoutError.js"
 import ParamError from "./error/ParamError.js"
 import MotionType from "./enum/MotionType.js"
 import NetworkController from "./NetworkController.js"
+import InitNetworkTimeoutError from "./error/InitNetworkTimeoutError.js"
+import InitConfigTimeoutError from "./error/InitConfigTimeoutError.js"
 
 export default class Xverse_Room extends EventEmitter {
     constructor(e) {

+ 2 - 44
src/其他的js.txt

@@ -126665,50 +126665,8 @@ function pingOthers(i, e) {
 }
 
 
-function VisibilityChangeHandler() {
-    this.subscribers = [],
-    this.bindFunc = void 0,
-    this.id = 1,
-    this.addListener()
-}
-VisibilityChangeHandler.prototype = {
-    subscribe(i) {
-        if (!i)
-            return;
-        const e = ++this.id
-          , t = {
-            id: e,
-            handler: i
-        };
-        return this.subscribers.push(t),
-        ()=>{
-            this.subscribers = this.subscribers.filter(n=>n.id == e)
-        }
-    },
-    destroy() {
-        !this.bindFunc || (document.hidden !== void 0 ? document.removeEventListener("visibilitychange", this.bindFunc, !1) : document.webkitHidden && document.removeEventListener("webkitvisibilitychange", this.bindFunc, !1))
-    },
-    broadcast(i) {
-        this.subscribers.forEach(e=>e.handler(i))
-    },
-    addListener() {
-        document.hidden !== void 0 ? (this.bindFunc = ()=>this.broadcast(document.hidden),
-        document.addEventListener("visibilitychange", this.bindFunc, !1)) : document.webkitHidden && (this.bindFunc = ()=>this.broadcast(document.webkitHidden),
-        document.addEventListener("webkitvisibilitychange", this.bindFunc, !1))
-    }
-};
-const WASM_Version = "h264"
-  , DECODER_VERSION = "v0.9.3"
-  , WASM_URLS = {
-    h264: "https://static.xverse.cn/wasm/v15/lib_ff264dec_no_idb_with_wasm_tbundle.js?tbundle=tmeland_base",
-    xv265: "https://static.xverse.cn/wasm/codec-release/h265-dec-sw-wasm/v-0-9-1/libxv265dec.js",
-    h265: ""
-}
-  , STUCK_STAGE_GOOD = 45
-  , STUCK_STAGE_WELL = 85
-  , STUCK_STAGE_FAIR = 125
-  , STUCK_STAGE_BAD = 165
-  , DECODER_PASSIVE_JITTER = 0;
+
+
 function add(i, e) {
     return e == -1 && (e = 0),
     i + e