diff --git a/backend-node/src/app.ts b/backend-node/src/app.ts index 06591522..d0532997 100644 --- a/backend-node/src/app.ts +++ b/backend-node/src/app.ts @@ -416,10 +416,12 @@ const server = app.listen(PORT, HOST, async () => { try { const { Server: SocketIOServer } = await import("socket.io"); const { initMessengerSocket } = await import("./socket/messengerSocket"); + const { setIo } = await import("./socket/socketManager"); const io = new SocketIOServer(server, { cors: { origin: "*", methods: ["GET", "POST"] }, path: "/socket.io", }); + setIo(io); initMessengerSocket(io); logger.info("💬 Socket.IO messenger initialized"); } catch (error) { diff --git a/backend-node/src/controllers/messengerController.ts b/backend-node/src/controllers/messengerController.ts index 25e1ee50..b1fe2e11 100644 --- a/backend-node/src/controllers/messengerController.ts +++ b/backend-node/src/controllers/messengerController.ts @@ -1,6 +1,7 @@ import { Request, Response } from 'express'; import { messengerService } from '../services/messengerService'; import { AuthenticatedRequest } from '../types/auth'; +import { getIo } from '../socket/socketManager'; import path from 'path'; class MessengerController { @@ -69,6 +70,13 @@ class MessengerController { } const message = await messengerService.sendMessage(roomId, user.userId, user.companyCode!, content, messageType, parentId); + + // Broadcast to all room participants via Socket.IO + const io = getIo(); + if (io) { + io.to(`${user.companyCode}:${roomId}`).emit('new_message', message); + } + res.json({ success: true, data: message }); } catch (error) { const err = error as Error; diff --git a/backend-node/src/socket/socketManager.ts b/backend-node/src/socket/socketManager.ts new file mode 100644 index 00000000..309ef6c0 --- /dev/null +++ b/backend-node/src/socket/socketManager.ts @@ -0,0 +1,11 @@ +import { Server } from 'socket.io'; + +let _io: Server | null = null; + +export function setIo(io: Server) { + _io = io; +} + +export function getIo(): Server | null { + return _io; +} diff --git a/frontend/components/messenger/MessageItem.tsx b/frontend/components/messenger/MessageItem.tsx index e647d64a..da9074a1 100644 --- a/frontend/components/messenger/MessageItem.tsx +++ b/frontend/components/messenger/MessageItem.tsx @@ -53,7 +53,7 @@ export function MessageItem({ message, isOwn, showAvatar }: MessageItemProps) {
)} -
+
{showAvatar && !isOwn && ( {message.senderName}