feat(multiplayer): replace polling with server-sent events and redis pub/sub
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
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}`;
|
||||
}
|
||||
Reference in New Issue
Block a user