Repository navigation
Expand file tree
/
Copy pathtest.js
More file actions
63 lines (51 loc) · 2.08 KB
/
Copy pathtest.js
File metadata and controls
63 lines (51 loc) · 2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
const WebSocket = require('ws');
async function runTest() {
console.log("Starting cross-node delivery test...");
const url = 'ws://host.docker.internal:8090/ws';
const ws1 = new WebSocket(url);
const ws2 = new WebSocket(url);
let node1 = '';
let node2 = '';
ws1.on('open', () => {
ws1.send(JSON.stringify({ type: 'join', user: 'TestClient1' }));
});
ws2.on('open', () => {
ws2.send(JSON.stringify({ type: 'join', user: 'TestClient2' }));
});
let msgsReceivedByWs2 = [];
ws1.on('message', (data) => {
const msg = JSON.parse(data);
if (msg.user === 'SYSTEM' && msg.text.includes('TestClient1 joined')) {
node1 = msg.serverId;
console.log(`ws1 connected to ${node1}`);
}
});
ws2.on('message', (data) => {
const msg = JSON.parse(data);
if (msg.user === 'SYSTEM' && msg.text.includes('TestClient2 joined')) {
node2 = msg.serverId;
console.log(`ws2 connected to ${node2}`);
// Once ws2 is connected, let ws1 send a message
setTimeout(() => {
console.log("ws1 sending message to ws2...");
ws1.send(JSON.stringify({ type: 'chat', user: 'TestClient1', text: 'Hello from ws1!' }));
}, 500);
} else if (msg.type === 'chat' || msg.user !== 'SYSTEM') {
msgsReceivedByWs2.push(msg);
console.log(`ws2 received message from ${msg.serverId}: ${msg.user}: ${msg.text}`);
}
});
setTimeout(() => {
console.log(`\n--- Test Results ---`);
console.log(`ws1 Node: ${node1}`);
console.log(`ws2 Node: ${node2}`);
const crossNode = node1 !== node2 && node1 !== '' && node2 !== '';
console.log(`Cross-node connection achieved: ${crossNode}`);
const received = msgsReceivedByWs2.find(m => m.text === 'Hello from ws1!');
console.log(`Message delivered across nodes: ${!!received}`);
ws1.close();
ws2.close();
process.exit(received && crossNode ? 0 : 1);
}, 2000);
}
runTest();