-
Notifications
You must be signed in to change notification settings - Fork 2
/
test.js
67 lines (60 loc) · 1.72 KB
/
test.js
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
64
65
66
67
const net = require('net.socket'),
Proxy = require('./index.js');
process.on('unhandledRejection', (reason, p) => {
console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);
process.exit(1);
});
const package = (data) => {
let buffer = data.slice(6, data.length), json = null;
json = JSON.parse(buffer.toString());
json.test = (json.test || '') + '.';
let d = Buffer.from(JSON.stringify(json));
const size = Buffer.alloc(6);
size.writeIntLE(d.length, 0, 6);
return Promise.resolve([json, Buffer.concat([size, d])]);
};
let p = new Proxy('localhost:5670', 'localhost:5671');
p.on('connect', (tunnel) => {
tunnel.on(Proxy.RX, (data, resolve) => {
package(data).then((r) => {
console.log('rx', Proxy.RX, tunnel.key, r[0]);
resolve(r[1]);
});
}).on(Proxy.TX, (data, resolve) => {
package(data).then((r) => {
console.log('tx', Proxy.TX, tunnel.key, r[0]);
resolve(r[1]);
});
}).on('close', () => {
console.log('tunnel closed');
});
});
p.on('open', () => {
let server = new net.Server('localhost:5671');
server.on('message', (res) => {
let client = res.client, payload = JSON.parse(res.payload.toString());
// console.log('Server recieve', client.id(), payload);
client.send(JSON.stringify({pong: payload}));
});
server.on('open', () => {
let c = new net.Client('localhost:5670');
c.on('connect', () => {
// console.log('client connected');
let i = 0;
let set = setInterval(() => {
if (i > 5) {
c.close();
p.close();
server.close();
clearInterval(set);
} else {
c.send(JSON.stringify({test: 'cat' + i}));
}
i++;
}, 100);
c.on('message', (/* res*/) => {
// console.log('Client message', JSON.parse(res.toString()));
});
});
});
});