feat(multiplayer): replace polling with server-sent events and redis pub/sub

This commit is contained in:
jessy-david-dev
2026-04-14 16:00:09 +02:00
parent 7ecf268191
commit 90b14919c5
6 changed files with 194 additions and 40 deletions
+21
View File
@@ -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}`;
}