import { IoAdapter } from '@nestjs/platform-socket.io'; import { ServerOptions } from 'socket.io'; import { createAdapter } from '@socket.io/redis-adapter'; import Redis, { RedisOptions } from 'ioredis'; import { createRetryStrategy } from '../../common/helpers'; export class WsRedisIoAdapter extends IoAdapter { private adapterConstructor: ReturnType; async connectToRedis(): Promise { const options: RedisOptions = { retryStrategy: createRetryStrategy(), }; const pubClient = new Redis(process.env.REDIS_URL, options); const subClient = new Redis(process.env.REDIS_URL, options); this.adapterConstructor = createAdapter(pubClient, subClient); } createIOServer(port: number, options?: ServerOptions): any { const server = super.createIOServer(port, options); server.adapter(this.adapterConstructor); return server; } }