Browse Source

add grpc and modulize service

gemercheung 3 years ago
parent
commit
6335739fc9
7 changed files with 69 additions and 68 deletions
  1. 3 1
      .env
  2. 24 24
      src/app.controller.ts
  3. 0 11
      src/grpc-scene.options.ts
  4. 10 20
      src/meta.gateway.ts
  5. 1 1
      src/scene/grpc-scene.options.ts
  6. 8 3
      src/scene/scene.d.ts
  7. 23 8
      src/scene/scene.service.ts

+ 3 - 1
.env

@@ -1,4 +1,6 @@
 PORT=6688
 PRIVATE_IP=172.18.197.114
 PUBLIC_IP=120.24.252.95
-ALL_IPS=['192.168.0']
+ALL_IPS=['192.168.0']
+STUNS_SEVER="stun:172.18.156.41:3478,stun:120.24.252.95:3478"
+GRPC_URL="192.168.0.152:3000"

+ 24 - 24
src/app.controller.ts

@@ -1,7 +1,7 @@
 import { Controller, Get, OnModuleInit } from '@nestjs/common';
 import { AppService } from './app.service';
 // import { UtilsModule } from '@app/utils';
-import { grpcClientOptions } from './grpc-scene.options';
+// import { grpcClientOptions } from './grpc-scene.options';
 
 import { ClientGrpc, Client } from '@nestjs/microservices';
 
@@ -12,37 +12,37 @@ interface Point {
 }
 @Controller()
 export class AppController implements OnModuleInit {
-  @Client(grpcClientOptions) private readonly client: ClientGrpc;
-  private sceneGrpcService: SceneGrpcService;
+  // @Client(grpcClientOptions) private readonly client: ClientGrpc;
+  // private sceneGrpcService: SceneGrpcService;
 
-  constructor(private readonly appService: AppService) {}
+  constructor(private readonly appService: AppService) { }
 
   onModuleInit() {
     // console.log('this.client', this.client);
-    this.sceneGrpcService =
-      this.client.getService<SceneGrpcService>('SceneGrpcService');
+    // this.sceneGrpcService =
+    //   this.client.getService<SceneGrpcService>('SceneGrpcService');
   }
   @Get()
   getHello(): string {
     // console.log('UtilsModule', UtilsModule);
-    const params: RouteRequest = {
-      sLocation: {
-        x: '6.0',
-        y: '0.0',
-        z: '-4.0',
-      },
-      eLocation: {
-        x: '4.0',
-        y: '0.0',
-        z: '-3.0',
-      },
-      sceneCode: 'Hello',
-    };
-    // console.log('params', params);
-    const test = this.sceneGrpcService.getRoute(params);
-    test.subscribe((val) => {
-      console.log('val', val);
-    });
+    // const params: RouteRequest = {
+    //   sLocation: {
+    //     x: '6.0',
+    //     y: '0.0',
+    //     z: '-4.0',
+    //   },
+    //   eLocation: {
+    //     x: '4.0',
+    //     y: '0.0',
+    //     z: '-3.0',
+    //   },
+    //   sceneCode: 'Hello',
+    // };
+    // // console.log('params', params);
+    // const test = this.sceneGrpcService.getRoute(params);
+    // test.subscribe((val) => {
+    //   console.log('val', val);
+    // });
     return this.appService.getHello();
   }
 }

+ 0 - 11
src/grpc-scene.options.ts

@@ -1,11 +0,0 @@
-import { Transport, ClientOptions } from '@nestjs/microservices';
-import { join } from 'path';
-
-export const grpcClientOptions: ClientOptions = {
-  transport: Transport.GRPC,
-  options: {
-    url: '192.168.0.152:3000',
-    package: 'scene',
-    protoPath: join(__dirname, '..', 'proto/scene.proto'),
-  },
-};

+ 10 - 20
src/meta.gateway.ts

@@ -21,7 +21,7 @@ import { Buffer } from 'buffer';
 import { Logger } from '@nestjs/common';
 import * as path from 'path';
 import { createReadStream } from 'fs';
-// import { SceneService } from './scene/scene.service';
+import { SceneService } from './scene/scene.service';
 // 'Verbose' | 'Debug' | 'Info' | 'Warning' | 'Error' | 'Fatal';
 initLogger('Debug');
 
@@ -32,9 +32,8 @@ initLogger('Debug');
   path: '/ws',
 })
 export class MetaGateway
-  implements OnGatewayInit, OnGatewayConnection, OnGatewayDisconnect
-{
-  // constructor(private readonly sceneService: SceneService) {}
+  implements OnGatewayInit, OnGatewayConnection, OnGatewayDisconnect {
+  constructor(private readonly sceneService: SceneService) { }
   private logger: Logger = new Logger('MetaGateway');
   private peer: PeerConnection = null;
   private timer: NodeJS.Timeout;
@@ -48,10 +47,7 @@ export class MetaGateway
   //   this.logger.log(`payload: ${JSON.stringify(payload)}`);
   // }
   afterInit(server: Server) {
-    this.logger.log('Init');
-    // console.log('sceneService', this.sceneService);
-    // console.log('gateway init', server);
-    // this.sceneService.getService('SceneGrpcService');
+    this.logger.log('Init MetaGateway');
   }
 
   @SubscribeMessage('init')
@@ -77,26 +73,21 @@ export class MetaGateway
       user_id: '',
     };
 
-    // if (this.gameChanel.isOpen()) {
-    //   // console.log('this.gameChanel.isOpen()', this.gameChanel.isOpen());
-    //   // this.sendWertcHeartPack(this.gameChanel);
-    //   // const heartPack = new DataView(new ArrayBuffer(4));
-    //   // heartPack.setUint32(0, 2009889916);
-    //   // this.gameChanel.sendMessageBinary(Buffer.from(heartPack.buffer));
-    //   // return pong;
-    // }
     return pong;
   }
 
   @SubscribeMessage('init_webrtc')
   handleInitWebRtc(client: any, payload: any): void {
     console.log('handleInitWebRtc');
-
+    console.log('this.sceneService', this.sceneService);
+    const stun_server: string[] = Array.from(
+      String(process.env.STUNS_SEVER).split(','),
+    );
+    this.logger.log('stun_server', stun_server);
     this.peer = new PeerConnection('roomTest', {
-      // iceServers: ['stun:stun.l.google.com:19302'],
       portRangeBegin: 52000,
       portRangeEnd: 53000,
-      iceServers: ['stun:172.18.156.41:3478', 'stun:120.24.252.95:3478'],
+      iceServers: stun_server,
     });
 
     this.peer.onLocalDescription((sdp, type) => {
@@ -108,7 +99,6 @@ export class MetaGateway
       };
       console.log('send', offerFormat);
       client.send(JSON.stringify(offerFormat));
-      // return '';
     });
 
     const replaceToPublic = (candidate) => {

+ 1 - 1
src/scene/grpc-scene.options.ts

@@ -4,7 +4,7 @@ import { join } from 'path';
 export const grpcClientOptions: ClientOptions = {
   transport: Transport.GRPC,
   options: {
-    url: '192.168.0.152:3000',
+    url: process.env.GRPC_URL,
     package: 'scene',
     protoPath: join(__dirname, '..', 'proto/scene.proto'),
   },

+ 8 - 3
src/scene/scene.d.ts

@@ -19,9 +19,14 @@ interface RouteRequest {
   sceneCode: string;
 }
 
-// interface RouteReply {
-
-// }
+interface InitRequest {
+  userId: string;
+  nickName: string;
+  skinId: string;
+  avatarId: string;
+  roomId: string;
+  appId: string;
+}
 
 interface RotateRequest {
   actionType: number;

+ 23 - 8
src/scene/scene.service.ts

@@ -1,25 +1,40 @@
 import { Injectable, OnModuleInit } from '@nestjs/common';
 import { ClientGrpc, Client } from '@nestjs/microservices';
-// import { Observable } from 'rxjs';
 import { grpcClientOptions } from './grpc-scene.options';
+import { Logger } from '@nestjs/common';
 
 @Injectable()
 export class SceneService implements OnModuleInit {
   @Client(grpcClientOptions) private readonly client: ClientGrpc;
   private sceneGrpcService: SceneGrpcService;
+  private logger: Logger = new Logger('SceneService');
 
-  OnModuleInit() {
+  onModuleInit() {
     this.sceneGrpcService =
       this.client.getService<SceneGrpcService>('SceneGrpcService');
-    debugger;
+    this.logger.log('init SceneGrpcService');
   }
 
-  getService(name: string) {
-    this.sceneGrpcService = this.client.getService<SceneGrpcService>(name);
-    return this.sceneGrpcService;
+  getRoute(request: RouteRequest) {
+    return this.sceneGrpcService.getRoute(request);
+  }
+  getBreakPoint(request: GetBreakPointRequest) {
+    return this.sceneGrpcService.getBreakPoint(request);
+  }
+
+  init(request: InitRequest) {
+    return this.sceneGrpcService.init(request);
+  }
+
+  move(request: MoveRequest) {
+    return this.sceneGrpcService.move(request);
+  }
+
+  rotate(request: RotateRequest) {
+    return this.sceneGrpcService.rotate(request);
   }
 
-  getRoute() {
-    console.log('this.sceneGrpcService', this.sceneGrpcService);
+  joystick(request: JoystickRequest) {
+    return this.sceneGrpcService.joystick(request);
   }
 }