Browse Source

调通了!

xushiting 3 năm trước cách đây
mục cha
commit
86ae5711c1
9 tập tin đã thay đổi với 874 bổ sung821 xóa
  1. 0 83
      src/Response.js
  2. 9 10
      src/Rtcp.js
  3. 33 0
      src/SecondArray.js
  4. 117 76
      src/Signal.js
  5. 12 7
      src/Socket.js
  6. 620 566
      src/Workers.js
  7. 77 75
      src/Xverse_Room.js
  8. 3 1
      src/enum/Actions.js
  9. 3 3
      src/enum/NewUserStateType.js

+ 0 - 83
src/Response.js

@@ -1,83 +0,0 @@
-var Response = {
-	"signal": {
-		"traceIds": [],
-		"vehicle": null,
-		"newUserStates": [{
-			"userId": null,    //要补充
-			"playerState": {
-				"roomTypeId": "",
-				"person": 0,
-				"avatarId": "",
-				"skinId": "",
-				"roomId": "",
-				"isHost": false,
-				"isFollowHost": false,
-				"skinDataVersion": "",
-				"avatarComponents": "",
-				"nickName": "",
-				"movingMode": 0,
-				"attitude": "",
-				"areaName": "",
-				"pathName": "",
-				"pathId": "",
-				"avatarSize": 1,
-				"extra": "",
-				"prioritySync": false,
-                //人物
-				"player": {
-					"position": {              //要补充
-						"x": null,
-						"y": null,
-						"z": null
-					},
-					"angle": {                 //要补充
-						"pitch": 0,
-						"yaw": 0,
-						"roll": 0
-					}
-				},
-				"camera": {
-					"position": {              //要补充
-						"x": null,
-						"y": null,
-						"z": null
-					},
-					"angle": {                 //要补充
-						"pitch": 0,          
-                        "yaw": 0,
-						"roll": 0
-					}
-				},
-				"cameraCenter": {               //要补充
-                    "x": null,
-                    "y": null,
-                    "z": null
-				}
-			},
-			"renderInfo": {
-				"renderType": 0,
-				"videoFrame": null,
-				"cameraStateType": 0,
-				"isMoving": 0,
-				"needIfr": 0,
-				"isVideo": 0,
-				"stillFrame": 0,
-				"isRotating": 0,
-				"isFollowing": 0,
-				"clientPanoTitlesBitmap": [],
-				"clientPanoTreceId": "",
-				"prefetchVideoId": "",
-				"noMedia": false
-			},
-			"event": null,
-			"relation": 1
-		}],
-		"actionResponses": [],
-		"getStateType": 0,
-		"code": 0,
-		"msg": "OK"
-	},
-	"pts": null,
-	"alreadyUpdateYUV": true
-}
-export default Response

+ 9 - 10
src/Rtcp.js

@@ -117,8 +117,13 @@ export default class Rtcp extends EventEmitter {
         }
         );
         E(this, "input", e=>{
-            var t;
-            !this.actived || !this.inputChannel || this.inputChannel.readyState === "open" && ((t = this.inputChannel) == null || t.send(e))
+            var o = this.inputChannel;
+			if(!this.actived || !this.inputChannel || this.inputChannel.readyState === "open"){
+				if(o != null){
+					console.log('发送webrtc数据:'+e)
+					o.send(e)
+				}
+			}
         }
         );
         this.network = e,
@@ -196,16 +201,10 @@ export default class Rtcp extends EventEmitter {
         e === "" ? this.network.rtcp.flushCandidate() : this.candidates.push(e)
     }
     disconnect() {
-        var e, t, r;
-        this.heartbeat.stop(),
-        logger.info("ready to close datachannel, id", (e = this.inputChannel) == null ? void 0 : e.id),
-        (t = this.inputChannel) == null || t.close(),
-        (r = this.connection) == null || r.close(),
-        this.connection = null,
-        this.inputChannel = null
+        var i, o, s;
+        this.heartbeat.stop(), logger.info("ready to close datachannel, id", (i = this.inputChannel) == null ? void 0 : i.id), (o = this.inputChannel) == null || o.close(), (s = this.connection) == null || s.close(), this.connection = null, this.inputChannel = null
     }
     sendStringData(e) {
-        console.log('e',e)
         this.input(e)
     }
     sendData(e) {

+ 33 - 0
src/SecondArray.js

@@ -0,0 +1,33 @@
+export default class SecondArray {
+    constructor() {
+        this.circularData = []
+    }
+    add(e) {
+        this.circularData.push(e)
+    }
+    getAvg() {
+        let e = 0;
+        for (let i = 0; i < this.circularData.length; i++) e += this.circularData[i];
+        return {
+            sum: e,
+            avg: e / this.circularData.length || 0
+        }
+    }
+    getMax() {
+        let e = 0;
+        for (let i = 0; i < this.circularData.length; i++) e < this.circularData[i] && (e = this.circularData[i]);
+        return e || 0
+    }
+    clear() {
+        this.circularData = []
+    }
+    getStat() {
+        const e = this.getAvg(),
+            i = {
+                sum: e.sum,
+                avg: e.avg,
+                max: this.getMax()
+            };
+        return this.clear(), i
+    }
+}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 117 - 76
src/Signal.js


+ 12 - 7
src/Socket.js

@@ -65,10 +65,14 @@ export default class Socket extends EventEmitter {
                     extra: JSON.stringify(R)
                 })
             };
-            this.send(x),
-            logger.warn("startGame", le(oe({}, x), {
-                data: JSON.parse(x.data)
-            }))
+            this.send(x);
+            const mt = JSON.parse(x.data);
+            delete mt.token;
+            logger.infoAndReportMeasurement({
+                metric: "startGame",
+                extra: mt,
+                startTime: Date.now()
+            })
         }
         );
         this.network = e,
@@ -210,9 +214,10 @@ export default class Socket extends EventEmitter {
                                 this.emit("socketClosed", new s(a))
                             }
                         }
-                    } catch (o) {
-                        logger.error(o),
-                        this.emit("socketClosed", new InternalError(r.data))
+                    } catch (d) {
+                        const _ = new InternalError("JSON.parse websocket data error: " + r.data);
+                        logger.error(d, _);
+                        this.emit("socketClosed", _)
                     }
                     break;
                 case "checkLatency":

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 620 - 566
src/Workers.js


+ 77 - 75
src/Xverse_Room.js

@@ -67,58 +67,38 @@ export default class Xverse_Room extends EventEmitter {
         E(this, "firstFrameTimestamp");
         E(this, "receiveRtcData", async()=>{
             logger.info("Invoke receiveRtcData");
-            let e = !1
-              , t = !1
-              , r = !1
-              , n = !1;
+            let i = !1,
+            o = !1,
+            s = !1,
+            c = !1;
             return this.viewMode === "serverless" ? (logger.warn("set view mode to serverless"),
-            this.setViewMode("observer").then(()=>this, ()=>this)) : new Promise(o=>{
-                const a = this.networkController.rtcp.workers;
-                a.registerFunction("signal", s=>{
-                    this.signal.handleSignal(s)
-                });
-
-                a.registerFunction("stream", s=>{
-                    var l;
-                    this.emit("streamTimestamp", {
-                        timestamp: Date.now()
-                    });
-                    t || (t = !0,logger.info("Invoke stream event"));
-                    if (s.stream) {
-                        r || (r = !0,logger.info("Invoke updateRawYUVData"));
-                        this.isUpdatedRawYUVData = !1;
-                        const fov = (l = this._currentState.skin) == null ? void 0 : l.fov;
-                        this.sceneManager.materialComponent.updateRawYUVData(s.stream, s.width, s.height, fov);
-                        this.isUpdatedRawYUVData = !0
+            this.setViewMode("observer").then(()=>this, ()=>this)) : new Promise((d, _) => {
+                const b = this.networkController.rtcp.workers;
+                b.registerFunction("signal", k => {
+                    this.signal.handleSignal(k, _)
+                }), 
+                b.registerFunction("stream", k => {
+                    var j;
+                    if (this.emit("streamTimestamp", {
+                            timestamp: Date.now()
+                        }), o || (o = !0, logger.info("Invoke stream event")), k.stream) {
+                        s || (s = !0, logger.info("Invoke updateRawYUVData")), this.isUpdatedRawYUVData = !1;
+                        const $ = (j = this._currentState.skin) == null ? void 0 : j.fov;
+                        this.sceneManager.materialComponent.updateRawYUVData(k.stream, k.width, k.height, $), this.isUpdatedRawYUVData = !0
                     }
-                    if(!e){
-                        logger.info("Invoke isAfterRenderRegistered");
-                        e = !0;
-                        this.scene.registerAfterRender(()=>{
-                            if(this.engineProxy.frameRenderNumber >= 2){
-                                n || (n = !0,logger.info("Invoke registerAfterRender"));
-                                if(!this.isFirstDataUsed){
-                                    logger.info("Invoke isStreamAvailable");
-                                    this.isFirstDataUsed = !0;
-                                    this.firstFrameTimestamp = Date.now();
-                                    o(this);
-                                    this.afterJoinRoom();
-                                }
-                            }
+                    if(!i){
+                        logger.info("Invoke isAfterRenderRegistered")
+                        i = !0, this.scene.registerAfterRender(() => {
+                            this.engineProxy.frameRenderNumber >= 2 && (c || (c = !0, logger.info("Invoke registerAfterRender")), this.isFirstDataUsed || (logger.info("Invoke isStreamAvailable"), this.isFirstDataUsed = !0, this.firstFrameTimestamp = Date.now(), d(this), this.afterJoinRoom()))
                         })
                     }
-                });
-
-                this.panorama.bindListener(()=>{
-                    o(this),
-                    this.afterJoinRoom()
-                });
-
-                a.registerFunction("reconnectedFrame", ()=>{});
-
-                logger.info("Invoke decoderWorker.postMessage");
-
-                a.decoderWorker.postMessage({
+                }), 
+                this.panorama.bindListener(() => {
+                    d(this), this.afterJoinRoom()
+                }), 
+                b.registerFunction("reconnectedFrame", () => {}), 
+                logger.info("Invoke decoderWorker.postMessage"), 
+                b.decoderWorker.postMessage({
                     t: 5
                 })
             }
@@ -303,9 +283,12 @@ export default class Xverse_Room extends EventEmitter {
         this.viewMode === "observer" && this.setViewModeToObserver(),
         logger.infoAndReportMeasurement({
             tag: this.viewMode,
-            value: this.firstFrameTimestamp - this._startTime,
+            value: this.firstFrameTimestamp || Date.now() - this._startTime,
             startTime: Date.now(),
-            metric: "joinRoom"
+            metric: "joinRoom",
+            reportOptions: {
+                immediate: !0
+            }
         }),
         this.camera.initialFov = this.sceneManager.cameraComponent.getCameraFov(),
         this.stats.on("stats", ({stats: e})=>{
@@ -314,11 +297,11 @@ export default class Xverse_Room extends EventEmitter {
         ),
         this.debug = new Debug(this),
         this.afterJoinRoomHook();
-        // setInterval(() => {
-        //     this.actionsHandler.getNewUserState(NewUserStateType.NUST_Undefined).then(i => {
-        //         this.avatarManager.handleAvatar(i)
-        //     }).catch(() => {})
-        // }, 2e3)
+        setInterval(() => {
+            this.actionsHandler.getNewUserState(NewUserStateType.NUST_Undefined).then(i => {
+                this.avatarManager.handleAvatar(i)
+            }).catch(() => {})
+        }, 2e3)
     }
     afterReconnected() {
         this.avatarManager.clearOtherUsers(),
@@ -423,15 +406,21 @@ export default class Xverse_Room extends EventEmitter {
     async initWasm() {
         if (this.viewMode === "serverless")
             return Promise.resolve();
-        const e = Date.now();
+        const i = Date.now();
         try {
-            await this.networkController.rtcp.workers.init(this.options.resolution)._timeout(8e3, new InitDecoderTimeoutError),
-            this.networkController.rtcp.workers.registerFunction("error", t=>{
-                logger.error("decode error", t);
-                const {code: code, message: n} = t;
+            await this.networkController.rtcp.workers.init({
+                width: 1920,
+                height: 1080,
+                userID: this.userId,
+                pageSession: this.options.pageSession,
+                serverSession: ""
+            })._timeout(8e3, new InitDecoderTimeoutError),
+            this.networkController.rtcp.workers.registerFunction("error", o=>{
+                logger.error("decode error", o);
+                const {code: s, message: c} = o;
                 this.emit("error", {
-                    code: code,
-                    msg: n
+                    code: s,
+                    msg: c
                 })
             }
             ),
@@ -443,31 +432,34 @@ export default class Xverse_Room extends EventEmitter {
             logger.infoAndReportMeasurement({
                 metric: "wasmInitCost",
                 group: "joinRoom",
-                startTime: e
+                startTime: i
             }),
-            eventsManager.on("traceId", t=>{
-                this.networkController.rtcp.workers.onTraceId(t)
+            eventsManager.on("traceId", o=>{
+                this.networkController.rtcp.workers.onTraceId(o)
             }
             )
-        } catch (t) {
+        } catch (o) {
             throw logger.infoAndReportMeasurement({
                 metric: "wasmInitAt",
                 group: "joinRoom",
-                startTime: e,
-                error: t
+                startTime: i,
+                error: o
             }),
-            t
+            o
         }
     }
     async requestCreateRoom({skinId: e}) {
-        let t;
+        let skin;
         if (e) {
-            t = await this.getSkin(e);
+            skin = await this.getSkin(e);
+            this.updateCurrentState({
+                skin: skin
+            });
             const r = await this.modelManager.findRoute(e, this.options.pathName);
             this.updateCurrentNetworkOptions({
                 areaName: r.areaName,
                 attitude: r.attitude,
-                versionId: t.versionId
+                versionId: skin.versionId
             });
             const {camera: n, player: player} = util.getRandomItem(r.birthPointList) || this.options;
             this.options.camera || this.updateCurrentNetworkOptions({
@@ -478,7 +470,7 @@ export default class Xverse_Room extends EventEmitter {
             })
         }
         if (this.viewMode === "serverless")
-            return t;
+            return skin;
         try {
             await this.beforeStartGameHook(this.options);
             const {room_id: room_id, data: n, session_id: session_id} = await this.networkController.startGame();
@@ -498,8 +490,8 @@ export default class Xverse_Room extends EventEmitter {
             });
             return skin
         } catch (r) {
-            throw logger.error("Request create room error", r),
-            r
+            logger.error("requestCreateRoom error:", r);
+            return Promise.reject(r)
         }
     }
     pause() {
@@ -568,4 +560,14 @@ export default class Xverse_Room extends EventEmitter {
         }),
         Object.assign(this._currentState, e)
     }
+
+    afterSetUrlHook() {}
+    afterTvStopedHook() {}
+    afterTvPlayedHook() {}
+    pageShowHandler() {
+        this.engineProxy.setEnv(this.skin), this.allowRender = !0
+    }
+    pageHideHandler() {
+        this.allowRender = !1
+    }
 }

+ 3 - 1
src/enum/Actions.js

@@ -31,6 +31,8 @@ var Actions = {
     AudienceChangeToVisitor:1020,
     VisitorChangeToAudience:1021,
     RemoveVisitor:1022,
-    GetUserWithAvatar:1023
+    GetUserWithAvatar:1023,
+    GetNewUserState:1024,
+    SetSyncPolicy:1025
 }
 export default Actions

+ 3 - 3
src/enum/NewUserStateType.js

@@ -1,6 +1,6 @@
 var NewUserStateType = {
-    NUST_Undefined:'NUST_Undefined',
-    NUST_Myself:'NUST_Myself',
-    NUST_FollowingList:'NUST_FollowingList'
+    NUST_Undefined:0,
+    NUST_Myself:1,
+    NUST_FollowingList:2
 }
 export default NewUserStateType