I have a service called "PlayerService" and the gateway calls "Player Gateway", the PlayersGateway has dependency of PlayerService, but I can't inject o service inside gateway.
PlayerGateway
@UseInterceptors(RedisPropagatorInterceptor)
@WebSocketGateway()
@Injectable()
export class PlayerGateway
extends BaseGateway
implements OnGatewayConnection, OnGatewayInit, OnGatewayDisconnect {
constructor(private playerService: PlayerService) {
super();
}
PlayerService
@Injectable()
export class PlayerService extends BaseService<Player> {
protected fieldsSearchable: FieldsSearchable = {};
private logger = new Logger('PlayerService');
constructor(
@InjectRepository(PlayerRepository)
repository: PlayerRepository,
@Inject(REQUEST) protected request: Request,
private redisService: RedisService,
) {
super();
this.setRepository(repository);
}
PlayerModule
@Module({
imports: [
TypeOrmModule.forFeature([Player, PlayerRepository]),
RedisModule,
SocketModule,
RedisPropagatorModule,
],
controllers: [PlayerController],
exports: [TypeOrmModule, PlayerService],
providers: [PlayerService, PlayerGateway],
})
export class PlayerModule {}
Modules.ts
@Module({
imports: [
RedisModule,
SocketModule,
RedisPropagatorModule,
SessionModule,
PlayerModule,
],
exports: [RedisModule, SocketModule],
controllers: [],
providers: [ServerGateway, NetworkGateway],
})
What I want to know is how can I inject the service inside gateway or a way to make something like this rsrs
Your PlayerService is trying to inject the request:
@Inject(REQUEST) protected request: Request
This doesn't make sense for constructing an instance of a Gateway as it should be independent of any individual HTTP request. Do you actually need to have access to the request inside your PlayerService
? If so you'll have to split this apart into separate services