Вам не нужно разбивать приложение.
Вы можете определить свой модуль как:
@Module({
providers: [
MyGateway,
MyService,
],
})
export class MyModule {}
при gateway
, отвечающем за канал веб-сокетов
import { SubscribeMessage, WebSocketGateway } from '@nestjs/websockets'
import { Socket } from 'socket.io'
...
@WebSocketGateway()
export class MyGateway {
constructor(private readonly myService: MyService) {}
@SubscribeMessage('MY_MESSAGE')
public async sendMessage(socket: Socket, data: IData): Promise<IData> {
socket.emit(...)
}
}
и service
отвечает за канал TCP
import { Client, ClientProxy, Transport } from '@nestjs/microservices'
...
@Injectable()
export class MyService {
@Client({
options: { host: 'MY_HOST', port: MY_PORT },
transport: Transport.TCP,
})
private client: ClientProxy
public async myFunction(): Promise<IData> {
return this.client
.send<IData>({ cmd: 'MY_MESSAGE' })
.toPromise()
.catch(error => {
throw new HttpException(error, error.status)
})
}
}