60501de992
* - fix: set default Nest logger and bufferLogs to false for pino compatibility - handle redis error event * fix collab server logging too
38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
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,
|
|
parseRedisUrl,
|
|
RedisConfig,
|
|
} from '../../common/helpers';
|
|
|
|
export class WsRedisIoAdapter extends IoAdapter {
|
|
private adapterConstructor: ReturnType<typeof createAdapter>;
|
|
private redisConfig: RedisConfig;
|
|
|
|
async connectToRedis(): Promise<void> {
|
|
this.redisConfig = parseRedisUrl(process.env.REDIS_URL);
|
|
|
|
const options: RedisOptions = {
|
|
family: this.redisConfig.family,
|
|
retryStrategy: createRetryStrategy(),
|
|
};
|
|
|
|
const pubClient = new Redis(process.env.REDIS_URL, options);
|
|
const subClient = new Redis(process.env.REDIS_URL, options);
|
|
|
|
pubClient.on('error', (err) => () => {});
|
|
subClient.on('error', (err) => () => {});
|
|
|
|
this.adapterConstructor = createAdapter(pubClient, subClient);
|
|
}
|
|
|
|
createIOServer(port: number, options?: ServerOptions): any {
|
|
const server = super.createIOServer(port, options);
|
|
server.adapter(this.adapterConstructor);
|
|
return server;
|
|
}
|
|
}
|