diff --git a/src/app/routes/api/events.$.ts b/src/app/routes/api/events.$.ts index d7f668a..c5160b7 100644 --- a/src/app/routes/api/events.$.ts +++ b/src/app/routes/api/events.$.ts @@ -3,11 +3,16 @@ import { serverEvents, type ServerEvent } from "@/lib/events/emitter"; import { logger } from "@/lib/logger"; import { superTokensRequestMiddleware } from "@/utils/supertokens"; +let activeConnections = 0; + export const Route = createFileRoute("/api/events/$")({ server: { middleware: [superTokensRequestMiddleware], handlers: { - GET: ({ request, context }) => { + GET: ({ request }) => { + activeConnections++; + const connectionId = `conn_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`; + logger.info(`ServerEvents | New connection ${connectionId}. Active: ${activeConnections}`); const stream = new ReadableStream({ start(controller) { const connectMessage = `data: ${JSON.stringify({ type: "connected" })}\n\n`; @@ -55,8 +60,12 @@ export const Route = createFileRoute("/api/events/$")({ }, 1000); const cleanup = () => { + activeConnections--; serverEvents.off("test", handleEvent); + serverEvents.off("match", handleEvent); + serverEvents.off("reaction", handleEvent); clearInterval(pingInterval); + logger.info(`ServerEvents | Connection ${connectionId} cleanup completed. Active: ${activeConnections}`); }; request.signal?.addEventListener("abort", cleanup); diff --git a/src/lib/events/emitter.ts b/src/lib/events/emitter.ts index d4846fa..944153e 100644 --- a/src/lib/events/emitter.ts +++ b/src/lib/events/emitter.ts @@ -2,6 +2,23 @@ import { EventEmitter } from "events"; export const serverEvents = new EventEmitter(); +serverEvents.setMaxListeners(50); + +// Debug logging for listener count +if (process.env.NODE_ENV === 'development') { + setInterval(() => { + const listenerCounts = { + test: serverEvents.listenerCount('test'), + match: serverEvents.listenerCount('match'), + reaction: serverEvents.listenerCount('reaction'), + }; + + if (listenerCounts.test > 0 || listenerCounts.match > 0 || listenerCounts.reaction > 0) { + console.log('ServerEvents listener count:', listenerCounts); + } + }, 30000); // Log every 30 seconds in development +} + export type TestEvent = { type: "test"; playerId: string;