Skip to content

Commit 495b7be

Browse files
committed
update
1 parent 38b5405 commit 495b7be

File tree

1 file changed

+49
-2
lines changed

1 file changed

+49
-2
lines changed

src/index.js

+49-2
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,63 @@ mongoose.connect(config.mongoose.url, config.mongoose.options).then(() => {
1515
const wss = new WebSocket.Server({ host: '0.0.0.0', port: 5001 });
1616
logger.info('WebSocket server is listening on port 5001');
1717

18+
// Store clients with their associated rasID
19+
const clients = new Map();
20+
1821
wss.on('connection', (ws) => {
1922
logger.info('New WebSocket connection');
2023

2124
ws.on('message', (message) => {
22-
logger.info(`Received message: ${message}`);
23-
// Handle incoming messages here
25+
try {
26+
const parsedMessage = JSON.parse(message);
27+
logger.info(`Received message: ${JSON.stringify(parsedMessage)}`);
28+
29+
if (parsedMessage.rasID) {
30+
// Store the rasID with the client
31+
// clients.set(ws, parsedMessage.rasID);
32+
// logger.info(`Stored rasID ${parsedMessage.rasID} for client`);
33+
if (!clients.has(ws)) {
34+
clients.set(ws, parsedMessage.rasID);
35+
logger.info(`Stored rasID ${parsedMessage.rasID} for client`);
36+
}
37+
}
38+
39+
if (parsedMessage.ID) {
40+
// check if not have ID before set
41+
if (!clients.has(ws)) {
42+
clients.set(ws, parsedMessage.ID);
43+
}
44+
// Forward the message to the client with the matching rasID
45+
}
46+
// clients.forEach((rasID, client) => {
47+
// if (rasID === parsedMessage.ID && client.readyState === WebSocket.OPEN && client !== ws) {
48+
// client.send(JSON.stringify(parsedMessage));
49+
// logger.info(`Forwarded message to client with rasID ${rasID}`);
50+
// }
51+
// });
52+
// send for client have same ID == rasID
53+
clients.forEach((rasID, client) => {
54+
if (rasID === parsedMessage.ID && client.readyState === WebSocket.OPEN && client !== ws) {
55+
client.send(JSON.stringify(parsedMessage));
56+
logger.info(`Forwarded message to client with rasID ${rasID}`);
57+
}
58+
});
59+
60+
clients.forEach((ID, client) => {
61+
if (ID === parsedMessage.rasID && client.readyState === WebSocket.OPEN && client !== ws) {
62+
client.send(JSON.stringify(parsedMessage));
63+
logger.info(`Forwarded message to client with ID ${ID}`);
64+
}
65+
});
66+
67+
} catch (e) {
68+
logger.error('Failed to parse message', e);
69+
}
2470
});
2571

2672
ws.on('close', () => {
2773
logger.info('WebSocket connection closed');
74+
clients.delete(ws);
2875
});
2976
});
3077
});

0 commit comments

Comments
 (0)