I can suggest U 2 way to do it
1: create your adapter that implement WebSocketAdapter. Then you can use @SocketGateway and @SubscribeMessage. You can read more at: Connect NestJS to a websocket server
2: create one provider implement OnApplicationBootstrap. In this provider, you install your socket client, and fire event from it to EventEmitor.
@Injectable()
export class IoClientGatewayBootstrap implements OnApplicationBootstrap {
  @Inject(IoClient)
  private ioClient: IoClient;
  @Inject(GLOBAL_PROVIDER.LOCAL_EVENT_EMITOR)
  private localEventEmitor: LocalEventEmitorInterface;
  onApplicationBootstrap() {
    console.log('run');
    this.connect();
  }
  connect = () => {
    const connection = io(AppConfig.SOCKET_SERVER_URL);
    connection.on('connect', () => {
      console.log('ok connect');
    });
    connection.on('disconnect', (reason) => {
      console.log('disconnect', reason);
    });
    // swap socket event to local event
    connection.onAny((eventName: string, ...args) => {
      console.log(eventName);
      this.localEventEmitor.emit(eventName, args);
    });
    this.ioClient.setIoClient(connection);
  };
}
where localEventEmitor is a service implement EventEmitter2 (https://docs.nestjs.com/techniques/events)
import { Injectable } from '@nestjs/common';
import { EventEmitter2 } from '@nestjs/event-emitter';
import { LocalEventEmitorInterface } from './local-event-emitor.interface';
@Injectable()
export class LocalEventEmitor implements LocalEventEmitorInterface {
  constructor(private eventEmitter: EventEmitter2) {}
  emit = (
    event: string,
    data: any,
  ) => {
    this.eventEmitter.emit(event, data);
  };
  
}
and now you can listen socket event as local event in any module you want
 @OnEvent('test-my-event')
  handleEvent(event: unknown) {
    console.log(event);
  }