import { Controller, Get, OnModuleInit, Param } from '@nestjs/common'; import { AppService } from './app.service'; import { grpcClientOptions } from './scene/grpc-scene.options'; import { ClientGrpc, Client } from '@nestjs/microservices'; import { SceneService } from './scene/scene.service'; import { CacheService } from './cache/cache.service'; @Controller() export class AppController implements OnModuleInit { @Client(grpcClientOptions) private readonly client: ClientGrpc; private sceneGrpcService: SceneGrpcService; constructor( private readonly appService: AppService, private readonly sceneService: SceneService, private readonly cacheService: CacheService, ) { } onModuleInit() { // console.log('this.client', this.client); // this.sceneGrpcService = // this.client.getService('SceneGrpcService'); // console.log('this.sceneGrpcService', this.sceneGrpcService); } @Get('/api/online/:roomId') async getOnline(@Param('roomId') roomId): Promise { try { const roomKey = process.env.NODE_ENV === 'development' ? `test-room:${roomId}` : `room:${roomId}`; const onlineRoomUsers = await this.cacheService.hGetAll(roomKey); const userIds = Object.keys(onlineRoomUsers); console.log('onlineRoomUsers', userIds); return { users: userIds || [], total: userIds.length || 0, }; } catch (error) { console.log('error', error); return { users: [], total: 0, }; } } }