Repository navigation
Expand file tree
/
Copy pathsockjs.js
More file actions
58 lines (48 loc) · 1.51 KB
/
Copy pathsockjs.js
File metadata and controls
58 lines (48 loc) · 1.51 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
var settings = require('./lib/settings')("settings.json"),
net = require('net'),
http = require('http'),
sockjs = require('sockjs')
let echo = sockjs.createServer();
var server = http.createServer();
echo.installHandlers(server, { prefix: '/sockjs' });
server.listen(settings.socket_io.listen_port, '0.0.0.0');
console.log("sockjs listening on " + settings.socket_io.listen_port)
echo.on('connection', function(client) {
console.log(client.headers['x-forwarded-for'] + " " + client.id + " connecting to API")
var apiSocket = net.createConnection(settings.api.listen_port, "localhost")
var apiBuffer = "";
apiSocket.on('connect', function() {
console.log('api connected')
})
apiSocket.on('data', function(data) {
var dstr = data.toString('utf8')
dstr.split('\n').forEach(function(ds, idx) {
if (idx == 0) { ds = apiBuffer + ds }
if (idx == ds.length - 1) {
apiBuffer = ds
} else {
if (ds.length > 0) {
console.log("-> " + ds)
client.write(ds)
}
}
})
})
apiSocket.on('error', function(err) {
console.log("apiSocket err: " + err)
})
apiSocket.on('close', function() {
console.log("apiSocket closed")
})
client.on('data', function(str) {
console.log(client.headers['x-forwarded-for'] + " <- " + str)
var written = apiSocket.write(str + "\n")
if (!written) {
console.log('sockjs write error')
}
});
client.on('close', function(client) {
apiSocket.end()
console.log('disconnnect!')
})
});