diff --git a/frontend/src/pages/chat/chat.ts b/frontend/src/pages/chat/chat.ts index c2cb9b8..1833249 100644 --- a/frontend/src/pages/chat/chat.ts +++ b/frontend/src/pages/chat/chat.ts @@ -26,16 +26,28 @@ socket.on("connect", async () => { }); -// Listen for messages from the server +// Listen for messages from the server "MsgObjectServer" socket.on("MsgObjectServer", (data) => { - console.log("Message from server:", data); + console.log("Message Obj Recieved:", data.message); + console.log("Recieved data.message.text: ", data.message.text); + console.log("Recieved data.message.user: ", data.message.user); + console.log("Recieved data.message.type: ", data.message.type); + console.log("Recieved data.message.token: ", data.message.token); + console.log("Recieved data.message.timestamp: ", data.message.timestamp); + + // Display the message in the chat window + const chatWindow = document.getElementById("t-chatbox") as HTMLDivElement; + if (chatWindow) { + const messageElement = document.createElement("div"); + messageElement.textContent = `${data.message.user}: ${data.message.text}`; + chatWindow.appendChild(messageElement); + chatWindow.scrollTop = chatWindow.scrollHeight; + } + console.log("Getuser():", getUser()); }); - - - type Providers = { name: string, display_name: string, @@ -59,17 +71,7 @@ function handleChat(_url: string, _args: RouteHandlerParams): RouteHandlerReturn const username = document.getElementById('username') as HTMLDivElement; - // const value = await client.chatTest(); - // if (value.kind === "success") { - // console.log(value.payload); - // } - // else if (value.kind === "notLoggedIn") { - // } else { - // console.log('unknown response: ', value); - // } - - // Helper to add a message locally const addMessage = (text: string) => { if (!chatWindow) return; @@ -90,10 +92,10 @@ function handleChat(_url: string, _args: RouteHandlerParams): RouteHandlerReturn const message = { type: "chat", user: user.name, - id: document.cookie, + token: document.cookie, text: msgText, timestamp: Date.now(), - userID: socket.id, + SenderWindowID: socket.id, }; socket.send(JSON.stringify(message)); } @@ -150,3 +152,14 @@ function handleChat(_url: string, _args: RouteHandlerParams): RouteHandlerReturn }; addRoute('/chat', handleChat, { bypass_auth: true }); + // const value = await client.chatTest(); + // if (value.kind === "success") { + // console.log(value.payload); + // } + // else if (value.kind === "notLoggedIn") { + + // } else { + // console.log('unknown response: ', value); + // } + + // Helper to add a message locally \ No newline at end of file diff --git a/src/chat/src/socket.ts b/src/chat/src/socket.ts index 2e5c792..b11cb33 100644 --- a/src/chat/src/socket.ts +++ b/src/chat/src/socket.ts @@ -28,53 +28,61 @@ export function setupSocketIo(fastify: import('fastify').FastifyInstance): void fastify.ready((err) => { if (err) throw err; - function broadcast(message: any, sender?: any) { + // function broadcast(message: any, sender?: any) { - fastify.io.fetchSockets().then((sockets) => { - console.log("Connected clients:", sockets.length); - for (const s of sockets) { + // fastify.io.fetchSockets().then((sockets) => { + // console.log("Connected clients:", sockets.length); + // for (const s of sockets) { - if (s.id !== sender) { - s.emit('MsgObjectServer',{ message: `${message}` }); - console.log("Socket ID:", s.id); - console.log("Rooms:", [...s.rooms]); - console.log("Sender:", sender ? sender : 'none'); - } - } - }); - } + // if (s.id !== sender) { + // s.emit('MsgObjectServer',{ message: `${message}` }); + // console.log("Socket ID:", s.id); + // console.log("Rooms:", [...s.rooms]); + // console.log("Sender:", sender ? sender : 'none'); + // console.log("ID:", message.text ? message.text : 'none'); + // } + // } + // }); + // } + +function broadcast(data: any, sender?: string) { + fastify.io.fetchSockets().then((sockets) => { + console.log("Connected clients:", sockets.length); + + for (const s of sockets) { + if (s.id !== sender) { + // Send REAL JSON object + s.emit("MsgObjectServer", { message: data }); + + console.log(" emit window socket ID:", s.id); + console.log(" emit window ID:", [...s.rooms]); + console.log(" Sender window ID:", sender ? sender : "none"); + console.log(" text recieved:", data.text ? data.text : "none"); + console.log(color.red, "data:", color.reset, data ? data : "none"); + } + } + }); +} + + + + // console.log(Object.getOwnPropertyNames(Object.getPrototypeOf(fastify.io))); fastify.io.on('connection', (socket : Socket) => { - console.info('Socket connected!', socket.id); - // socket.on('hello', (value) => { - // return 'hi'; - // }); + console.info(color.blue, 'Socket connected!', color.reset, socket.id); + socket.on("message", (message: string) => { + console.log(color.blue, `Received message from client`, color.reset, message); + const obj = JSON.parse(message); // { userID, text } + console.log(color.green, `Message from client`, color.reset, `${obj.userID}: ${obj.text}`); - // fastify.io.fetchSockets().then((sockets) => { - // console.log("Connected clients:", sockets.length); - // for (const s of sockets) { - // console.log("Socket ID:", s.id); - // console.log("Rooms:", [...s.rooms]); - // } - // }); - - - - // socket.emit("MsgObjectServer", {message: `THIS IS A SERVER MESSAGE`}); - socket.on('message', (message: string) => { - // console.log(color.red + `GOT MESSAGE ${color.reset} ${value}`); - - console.log(color.green + `GOT MESSAGE from client ${socket.id}: ${color.reset} ${message}`); - const obj = JSON.parse(message); - const userID = obj.userID; - console.log(`Message from client ${obj.userID}: ${obj.text}`); - broadcast(`Broadcast from THIS server: ${obj.text}`,userID); + // Send object directly — DO NOT wrap it in a string + broadcast(obj, obj.SenderWindowID); }); - // socket.on('MsgObjectServer', (value) => { console.log(`GOT COUCOU ${value.message}`) - //broadcast(`Broadcast from server:`, socket.id ); - // }); - + + + + socket.on('testend', (sock_id_cl : string) => { console.log('testend received from client socket id:', sock_id_cl); }); @@ -86,11 +94,7 @@ export function setupSocketIo(fastify: import('fastify').FastifyInstance): void }); - // fastify.io.on('disconnect', (socket : Socket) => { - // console.log('weeeeeeeeeeeewoooooooooooooooooooooooooo'); - // console.log('alert in the high castle'); - // console.log('Socket disconnected!', socket.id); - // }); + }); };