import socketIo from 'socket.io' import sharedsession from 'express-socket.io-session' import { createNamespacedDebug } from './logger.js' import { DEFAULTS } from './constants.js' const debug = createNamespacedDebug('app') /** * Configures Socket.IO with the given server * @param {http.Server} server - The HTTP server instance * @param {Function} sessionMiddleware - The session middleware * @param {Object} config - The configuration object * @returns {import('socket.io').Server} The Socket.IO server instance */ export function configureSocketIO(server, sessionMiddleware, config) { const io = socketIo(server, { serveClient: false, path: DEFAULTS.IO_PATH, pingTimeout: DEFAULTS.IO_PING_TIMEOUT, pingInterval: DEFAULTS.IO_PING_INTERVAL, cors: config.getCorsConfig(), }) // Share session with io sockets io.use( sharedsession(sessionMiddleware, { autoSave: true, }) ) debug('IO configured') return io }