fix: socketio redis adapter

This commit is contained in:
abdou6666 2025-01-02 10:15:14 +01:00
parent 9770a344aa
commit 4607df67aa

View File

@ -1,11 +1,12 @@
/* /*
* Copyright © 2024 Hexastack. All rights reserved. * Copyright © 2025 Hexastack. All rights reserved.
* *
* Licensed under the GNU Affero General Public License v3.0 (AGPLv3) with the following additional terms: * Licensed under the GNU Affero General Public License v3.0 (AGPLv3) with the following additional terms:
* 1. The name "Hexabot" is a trademark of Hexastack. You may not use this name in derivative works without express written permission. * 1. The name "Hexabot" is a trademark of Hexastack. You may not use this name in derivative works without express written permission.
* 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file). * 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file).
*/ */
import { InternalServerErrorException } from '@nestjs/common';
import { IoAdapter } from '@nestjs/platform-socket.io'; import { IoAdapter } from '@nestjs/platform-socket.io';
import { createAdapter } from '@socket.io/redis-adapter'; import { createAdapter } from '@socket.io/redis-adapter';
import { createClient } from 'redis'; import { createClient } from 'redis';
@ -17,14 +18,19 @@ export class RedisIoAdapter extends IoAdapter {
private adapter: ReturnType<typeof createAdapter>; private adapter: ReturnType<typeof createAdapter>;
async connectToRedis(): Promise<void> { async connectToRedis(): Promise<void> {
const pubClient = createClient( if (config.cache.host !== 'redis') {
config.cache.type === 'redis' && { throw new InternalServerErrorException(
socket: { `Unable to run connect to redis host is ${config.cache.host} instead of 'redis'`,
host: config.cache.host, );
port: config.cache.port, }
}, // @todo : add zod validation
const redisConfig = {
socket: {
host: config.cache.host,
port: config.cache.port,
}, },
); };
const pubClient = createClient(redisConfig);
const subClient = pubClient.duplicate(); const subClient = pubClient.duplicate();
pubClient.on('error', (error) => { pubClient.on('error', (error) => {
throw error; throw error;