Browse Source

Merge branch 'jointWorker' of http://192.168.0.115:3000/zhangyupeng/meta-server into jointWorker

test pc 3 năm trước cách đây
mục cha
commit
f487c9e6d6
2 tập tin đã thay đổi với 19 bổ sung6 xóa
  1. 7 5
      src/meta.gateway.ts
  2. 12 1
      src/scene/scene.service.ts

+ 7 - 5
src/meta.gateway.ts

@@ -35,12 +35,11 @@ initLogger('Debug');
   path: '/ws',
 })
 export class MetaGateway
-  implements OnGatewayInit, OnGatewayConnection, OnGatewayDisconnect
-{
+  implements OnGatewayInit, OnGatewayConnection, OnGatewayDisconnect {
   constructor(
     private readonly sceneService: SceneService,
     private readonly configService: ConfigService,
-  ) {}
+  ) { }
   private logger: Logger = new Logger('MetaGateway');
   private peer: PeerConnection = null;
   private timer: NodeJS.Timeout;
@@ -181,7 +180,10 @@ export class MetaGateway
       console.log('track', track);
     });
 
-    this.gameChanel = this.peer.createDataChannel('game-input');
+    this.gameChanel = this.peer.createDataChannel('game-input', {
+      ordered: true,
+      // negotiated: false
+    });
 
     this.peer.onDataChannel((dc) => {
       console.log('onDataChannel', dc);
@@ -288,7 +290,7 @@ export class MetaGateway
           }
         },
       );
-    } catch (error) {}
+    } catch (error) { }
   }
 
   handleConnection(client: WebSocket, ...args: any[]) {

+ 12 - 1
src/scene/scene.service.ts

@@ -748,7 +748,10 @@ export class SceneService implements OnModuleInit, OnModuleDestroy {
     this.holdSteam();
 
     //console.log('joystickRes有mediaSrc', joystickRes.mediaSrc);
-    console.log('handlejoystick-angle->相机角度-------------------------:'+joystickRes['newUserStates'][0].playerState.camera.angle.yaw);
+    console.log(
+      'handlejoystick-angle->相机角度-------------------------:' +
+        joystickRes['newUserStates'][0].playerState.camera.angle.yaw,
+    );
     let streamData: StreamFrameType | StreamMetaType;
 
     // if (this.joystickFrameCnt === -1) {
@@ -1062,12 +1065,17 @@ export class SceneService implements OnModuleInit, OnModuleDestroy {
     this.startSteaming.next(true);
     // this.startStream();
     // this.handleStream();
+    this.channel.onBufferedAmountLow(() => {
+      console.log('onBufferedAmountLow');
+    });
   }
 
   handleDataChanelClose(): void {
+    this.roQueue.clean();
     this.stopStream();
     this.startSteaming.next(false);
     this.streamService.closeChannel();
+    this.cleanMoveSteam();
     // const exitRequest: ExitRequest = {
     //   action_type: 1002,
     //   user_id: this.user_id,
@@ -1132,6 +1140,7 @@ export class SceneService implements OnModuleInit, OnModuleDestroy {
       this.requestIFrameQueueSub = this.requestIFrameQueue.subscribe(
         async (frameData: StreamFrameType) => {
           if (frameData) {
+            this.globalOptLock = true;
             const nextFrame = this.frameCnt.getValue() + 1;
             this.logger.warn('lostIframe', nextFrame);
             frameData.frame = nextFrame;
@@ -1145,6 +1154,7 @@ export class SceneService implements OnModuleInit, OnModuleDestroy {
               clearTimeout(this._packFrameTimeout);
               this._packFrameTimeout = setTimeout(() => {
                 this.resumeStream();
+                this.globalOptLock = false;
               }, 100);
             } else {
               console.error('补帧有误:', JSON.stringify(frameData));
@@ -1221,6 +1231,7 @@ export class SceneService implements OnModuleInit, OnModuleDestroy {
             this.peer.bytesReceived() +
             ' bytesSent: ' +
             this.peer.bytesSent(),
+            ' state: ' + this.peer.state(),
           );
           if (frame === 1) {
             // redisData = await this.rotateService.echo(this.user_id, true);