Spaces:
Paused
Paused
| const io = require("socket.io-client"); | |
| const SERVER_URL = "http://localhost:3001"; | |
| const ROOM_ID = "receipts-test-room"; | |
| const createClient = (name) => { | |
| const socket = io(SERVER_URL, { | |
| auth: { userId: `user-${name}` }, | |
| }); | |
| return socket; | |
| }; | |
| const client1 = createClient("Sender"); | |
| const client2 = createClient("Receiver"); | |
| client1.on("connect", () => { | |
| console.log("Sender connected"); | |
| client1.emit("join-room", { roomId: ROOM_ID }); | |
| }); | |
| client1.onAny((event, ...args) => { | |
| console.log(`Sender received event: ${event}`); | |
| }); | |
| client2.on("connect", () => { | |
| console.log("Receiver connected"); | |
| client2.emit("join-room", { roomId: ROOM_ID }); | |
| }); | |
| // Flow: | |
| // 1. Sender sends message | |
| // 2. Receiver receives -> emits delivered -> emits read | |
| // 3. Sender receives status updates | |
| const messageId = "test-msg-id-123"; | |
| client1.on("message-status", (data) => { | |
| console.log(`Sender received status update: ${data.status} for msg ${data.messageId}`); | |
| }); | |
| client2.on("receive-message", (data) => { | |
| console.log("Receiver got message:", data.messageId); | |
| // Simulate frontend behavior | |
| console.log("Receiver emitting delivered..."); | |
| client2.emit("message-delivered", { | |
| roomId: ROOM_ID, | |
| messageId: data.messageId, | |
| senderId: data.senderId, | |
| recipientId: client2.id | |
| }); | |
| setTimeout(() => { | |
| console.log("Receiver emitting read..."); | |
| client2.emit("message-read", { | |
| roomId: ROOM_ID, | |
| messageId: data.messageId, | |
| senderId: data.senderId, | |
| recipientId: client2.id | |
| }); | |
| }, 1000); | |
| }); | |
| setTimeout(() => { | |
| console.log("Sender sending message..."); | |
| client1.emit("send-message", { | |
| roomId: ROOM_ID, | |
| payload: { content: "encrypted", keys: {} }, // Dummy payload | |
| senderId: "user-Sender", // In real app this is socket.id usually, but server uses what we send? | |
| // Wait, server uses socket.id for sender usually? | |
| // In ChatRoom.tsx: senderId: socket.id | |
| messageId: messageId | |
| }); | |
| }, 2000); | |
| setTimeout(() => { | |
| client1.disconnect(); | |
| client2.disconnect(); | |
| console.log("Done"); | |
| }, 5000); | |