-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathserver.js
79 lines (65 loc) · 1.86 KB
/
server.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
68
69
70
71
72
73
74
75
76
77
78
79
const SocketDataHandler = require('./connection/socketDataHandler.js');
const peerSocket = require('./peer.js')
const ChunkMap = require('./chunkMap.js')
const PlayerList = require('./playerList.js')
const log = require('loglevel')
const net = require('net');
const args = process.argv.slice(2)
const server = net.createServer();
const hostname = '127.0.0.1';
const port = args[0];
const verbosity = args[1] ? args[1] : 'info';
log.setLevel(verbosity)
var peers = loadFromPeerConfig()
function loadFromPeerConfig() {
//will eventually read from txt file probably
return []
}
function connectToPeers() {
chunkMap.map( (p,x,z) => {
if(p && !p.localhost && !p.connection) {
p.connection = net.createConnection(p, () => {
log.debug(`connected to peer ${p.addr}:${p.port}`)
peerSocket(p.connection, playerList, anchorList, x, z, p)
})
}
return p
})
}
var chunkMap = new ChunkMap()
peers.forEach(peer => {
chunkMap.allocateServer(peer)
})
var playerList = new PlayerList()
var guestList = new PlayerList()
var anchorList = new PlayerList()
var eventPipes = []
function socketLog(socket, msg) {
return `Socket ${socket.remoteAddress}: ${msg}`
}
server.on('connection', socket => {
connectToPeers()
var handler = new SocketDataHandler(socket, chunkMap, playerList, guestList, anchorList, eventPipes)
log.debug(socketLog(socket, 'socket opened'))
socket.on('close', err => {
handler.logout()
socket.destroy()
if(err){
log.error(socketLog(socket,'socket closed due to error'))
} else {
log.debug(socketLog(socket,'socket closed'))
}
})
socket.on('error', err => {
log.error(socketLog(socket,err))
})
socket.on('data', data => {
handler.socketData(data)
})
});
server.on('close', socket => {
log.debug('server closed');
});
server.listen(port, hostname, () => {
log.debug('server on');
});