2023-12-08 20:38:25 -05:00
|
|
|
import { INestApplicationContext } from '@nestjs/common';
|
|
|
|
|
import { IoAdapter } from '@nestjs/platform-socket.io';
|
2024-07-03 21:27:29 +01:00
|
|
|
import { createAdapter } from '@socket.io/redis-adapter';
|
|
|
|
|
import { Redis } from 'ioredis';
|
2023-12-08 20:38:25 -05:00
|
|
|
import { ServerOptions } from 'socket.io';
|
2025-01-21 13:13:09 -05:00
|
|
|
import { ConfigRepository } from 'src/repositories/config.repository';
|
2023-12-08 20:38:25 -05:00
|
|
|
|
|
|
|
|
export class WebSocketAdapter extends IoAdapter {
|
|
|
|
|
constructor(private app: INestApplicationContext) {
|
|
|
|
|
super(app);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
createIOServer(port: number, options?: ServerOptions): any {
|
2025-01-21 13:13:09 -05:00
|
|
|
const { redis } = this.app.get(ConfigRepository).getEnv();
|
2023-12-08 20:38:25 -05:00
|
|
|
const server = super.createIOServer(port, options);
|
2024-10-17 10:50:54 -04:00
|
|
|
const pubClient = new Redis(redis);
|
2024-07-03 21:27:29 +01:00
|
|
|
const subClient = pubClient.duplicate();
|
|
|
|
|
server.adapter(createAdapter(pubClient, subClient));
|
2023-12-08 20:38:25 -05:00
|
|
|
return server;
|
|
|
|
|
}
|
|
|
|
|
}
|