22 lines
721 B
TypeScript
22 lines
721 B
TypeScript
import Redis from "ioredis";
|
|||
|
|
|
||
|
|
const url = process.env.REDIS_URL!;
|
||
|
|
|
||
|
|
// Client global pour publish/get (réutilisé entre les requêtes via le module cache Node.js)
|
||
|
|
const globalForRedis = globalThis as unknown as { redis: Redis | undefined };
|
||
|
|
|
||
|
|
export const redis =
|
||
|
|
globalForRedis.redis ??
|
||
|
|
new Redis(url, { lazyConnect: false, maxRetriesPerRequest: 3 });
|
||
|
|
|
||
|
|
if (process.env.NODE_ENV !== "production") globalForRedis.redis = redis;
|
||
|
|
|
||
|
|
// Crée toujours un nouveau client pour subscribe (ioredis interdit de mixer pub et sub)
|
||
|
|
export function createSubscriber(): Redis {
|
||
|
|
return new Redis(url, { lazyConnect: false, maxRetriesPerRequest: 3 });
|
||
|
|
}
|
||
|
|
|
||
|
|
export function roomChannel(code: string): string {
|
||
|
|
return `room:${code}`;
|
||
|
|
}
|