diff --git a/backend/src/chat-server.ts b/backend/src/chat-server.ts index e7205b9..4909c63 100644 --- a/backend/src/chat-server.ts +++ b/backend/src/chat-server.ts @@ -1,28 +1,19 @@ import express, { Request, Response } from 'express'; import { Logger } from "pino"; import { Server, Socket } from "socket.io"; -import { createServer } from "http"; export class ChatServer { port: number; app: express.Application; logger: Logger; - io: Server; constructor(logger: Logger, port: number = 3000) { this.port = port; this.logger = logger; this.app = express(); - // ref: https://socket.io/docs/v4/server-initialization/#with-express - this.io = new Server(createServer(this.app), { - cors: { - origin: '*', - } - }); this.setupAppRoutes(); - this.setupSocketHandler(); } - setupAppRoutes() { + private setupAppRoutes() { // health check // ref: https://kubernetes.io/docs/reference/using-api/health-checks/ this.app.get('/livez', (req: Request, res: Response) => { @@ -30,11 +21,8 @@ export class ChatServer { }); } - setupSocketHandler() { - this.io.on("listening", () => { - this.logger.info(`Server running at http://localhost:${this.port}`); - }); - this.io.on('connection', (socket: Socket) => { + private setupSocketHandler(io: Server) { + io.on('connection', (socket: Socket) => { const sessionLogger = this.logger.child({ session: socket.id }); sessionLogger.info(`Connected client session ${socket.id} on port ${this.port}`); socket.on('disconnect', () => { @@ -43,7 +31,17 @@ export class ChatServer { }); } - listen() { - this.io.listen(this.port); + public listen() { + const httpServer = this.app.listen(this.port, + () => { console.log(`Server listening on port ${this.port}`) } + ); + + // Express server and socket.io server is sharing the same http server + const io = new Server(httpServer, { + cors: { + origin: '*', + } + }); + this.setupSocketHandler(io); } }