11import { createServer } from 'http'
22import { createLogger } from '@sim/logger'
3+ import type { Server as SocketIOServer } from 'socket.io'
34import { env } from '@/lib/core/config/env'
45import { createSocketIOServer , shutdownSocketIOAdapter } from '@/socket/config/socket'
56import { setupAllHandlers } from '@/socket/handlers'
@@ -9,27 +10,16 @@ import { createHttpHandler } from '@/socket/routes/http'
910
1011const logger = createLogger ( 'CollaborativeSocketServer' )
1112
12- /**
13- * Create the appropriate RoomManager based on configuration
14- * If REDIS_URL is set, uses Redis for multi-pod support
15- * Otherwise, uses in-memory for single-pod mode
16- *
17- * IMPORTANT: If Redis is configured, we ONLY use Redis - no fallback
18- * This prevents split-brain scenarios
19- */
20- async function createRoomManager ( io : ReturnType < typeof createServer > ) : Promise < IRoomManager > {
21- // Type assertion needed because io parameter comes from socket.io Server
22- const socketIo = io as unknown as import ( 'socket.io' ) . Server
23-
13+ async function createRoomManager ( io : SocketIOServer ) : Promise < IRoomManager > {
2414 if ( env . REDIS_URL ) {
2515 logger . info ( 'Initializing Redis-backed RoomManager for multi-pod support' )
26- const manager = new RedisRoomManager ( socketIo , env . REDIS_URL )
16+ const manager = new RedisRoomManager ( io , env . REDIS_URL )
2717 await manager . initialize ( )
2818 return manager
2919 }
3020
3121 logger . warn ( 'No REDIS_URL configured - using in-memory RoomManager (single-pod only)' )
32- const manager = new MemoryRoomManager ( socketIo )
22+ const manager = new MemoryRoomManager ( io )
3323 await manager . initialize ( )
3424 return manager
3525}
@@ -50,7 +40,7 @@ async function main() {
5040 const io = await createSocketIOServer ( httpServer )
5141
5242 // Initialize room manager (Redis or in-memory based on config)
53- const roomManager = await createRoomManager ( io as unknown as ReturnType < typeof createServer > )
43+ const roomManager = await createRoomManager ( io )
5444
5545 // Set up authentication middleware
5646 io . use ( authenticateSocket )
0 commit comments