Skip to content

Commit de6d7ec

Browse files
committed
ES6 + Bunyan logging
1 parent d9949f4 commit de6d7ec

8 files changed

+172
-163
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ results
1414
client/source/
1515

1616
npm-debug.log
17+
node_modules/

server/app.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
var PolicyServer = require('./src/PolicyServer'),
22
LobbyServer = require('./src/LobbyServer'),
33
GameServer = require('./src/GameServer');
4-
4+
55
var package = require('./package.json');
66

77
// Set up the logger
8-
var winston = require('winston');
9-
winston.cli();
8+
var bunyan = require('bunyan')
9+
, log = bunyan.createLogger({ name: 'app' });
1010

11-
winston.info('Begining startup of ' + package.name + ' v' + package.version);
11+
log.info('Begining startup of %s v%s', package.name, package.version);
1212

1313
var policyServer = new PolicyServer();
14-
var lobbyServer = new LobbyServer();
14+
var lobbyServer = new LobbyServer();

server/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
{
22
"name": "dots-emulator",
3-
"version": "1.1.1",
3+
"version": "2.0.0",
44
"description": "A Click Upon Dots server emulator",
55
"main": "app.js",
66
"dependencies": {
7+
"bunyan": "^1.8.1",
78
"winston": "~0.6.2"
89
},
910
"devDependencies": {},

server/src/GameServer.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/src/LobbyServer.js

+70-68
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
1+
'use strict';
2+
13
var net = require("net")
2-
, logger = require('winston')
3-
, config = require('../config');
4+
, bunyan = require('bunyan')
5+
, config = require('../config')
6+
, log = bunyan.createLogger({ name: "lobby" });
47

58
var GameServer = require('./GameServer'),
69
MultiplayerServer = require('./MultiplayerServer');
710

8-
function LobbyServer() {
11+
class LobbyServer {
12+
constructor() {
913
this.history = []; // Chat history buffer
1014
this.rooms = []; // Array of room data
1115
this.userIds = []; // Array of currently in use IDs
@@ -17,80 +21,78 @@ function LobbyServer() {
1721

1822
this.port = config.gamePort;
1923

20-
this.server = new MultiplayerServer();
21-
22-
var server = this.server;
23-
var lobby = this;
24+
var server = new MultiplayerServer();
25+
this.server = server;
2426

25-
server.on('connection', function(user) {
26-
logger.info('Connection from ' + user.socket.address().address);
27+
server.on('connection', user => {
28+
log.info('Connection from %s', user.socket.address().address);
2729

28-
user.id = lobby.getUniqueId();
30+
user.id = this.getUniqueId();
2931
user.name = "User";
3032
user.fullname = user.name + '`' + user.id;
3133
user.room = 'none';
3234

3335
user.admin = false;
3436

35-
lobby.rooms['none'].users.push(user);
37+
this.rooms['none'].users.push(user);
3638
});
3739

38-
server.on('data', function(user, data) {
40+
server.on('data', (user, data) => {
3941
switch(data[0]) {
4042
case 'r': // User name
4143
user.name = data.substr(1);
4244
user.fullname = user.name + '`' + user.id;
4345
user.write('d' + user.id, 'g'); // User ID, dequeue
4446
break;
45-
47+
4648
case 'q': // Quit game room
47-
if(lobby.rooms[user.room].started) {
49+
if(this.rooms[user.room].started) {
4850
var room = user.room;
4951

50-
lobby.rooms[room].started = false;
51-
lobby.rooms[room].users.forEach(function(roomUser) {
52+
this.rooms[room].started = false;
53+
this.rooms[room].users.forEach(roomUser => {
5254
server.writeAll('l' + roomUser.room + '`' + roomUser.fullname);
5355
roomUser.room = 'none';
5456
});
55-
57+
5658
server.writeAll('r' + room);
57-
lobby.rooms[room].users = [];
59+
this.rooms[room].users = [];
5860
}
5961

6062
user.write('g');
6163
break;
62-
64+
6365
case 'o': // Join lobby
6466
user.writeOthers('j' + user.room + '`' + user.fullname);
65-
server.each(function(u) {
67+
server.each(u => {
6668
user.write('j' + u.room + '`' + u.fullname);
6769
});
6870

69-
user.write.apply(user, lobby.history);
71+
user.write.apply(user, this.history);
7072

71-
for(var i in lobby.rooms) {
72-
if(lobby.rooms[i].started) {
73+
for(var i in this.rooms) {
74+
if(this.rooms[i].started) {
7375
user.write('s'+i);
7476
}
7577
}
7678
break;
77-
79+
7880
case 'c': // Chat
7981
var chat = data.substr(1);
8082

8183
if(chat.substr(0, user.name.length + 9) == '<b>' + user.name + '</b>: ') {
8284
server.emit('chat', user, chat.substr(user.name.length + 9));
8385
} else {
84-
logger.warn('Malformed chat from ' + user.fullname + ' ' + chat);
86+
log.warn('Malformed chat from %s %s', user.fullname, chat);
8587
}
8688
break;
87-
89+
8890
case 'j': // Join room
8991
// There's a bit of a bug-fix in the client here.
9092
// If the client requests an invalid room, the client still waits for a "join room" response from the server
9193
// Even worse, if they're in the "none" room, sending them to the current room doesn't unlock the client.
9294
// So to work around this, we move them to their current room, or the room they requested then back if they're in "none".
93-
if(!lobby.isValidRoom(data.substr(1))) {
95+
if(!this.isValidRoom(data.substr(1))) {
9496
if(user.room == 'none')
9597
user.write('j' + data.substr(1) + '`' + user.fullname);
9698

@@ -99,37 +101,37 @@ function LobbyServer() {
99101
break;
100102
}
101103

102-
lobby.rooms[user.room].removeUser(user);
104+
this.rooms[user.room].removeUser(user);
103105
server.writeAll('l' + user.room + '`' + user.fullname);
104106

105107
user.room = data.substr(1);
106-
lobby.rooms[user.room].users.push(user)
108+
this.rooms[user.room].users.push(user)
107109
server.writeAll('j' + user.room + '`' + user.fullname);
108110
break;
109-
111+
110112
case 's': // Start game
111113
var room = parseInt(user.room);
112114

113-
lobby.rooms[user.room].started = true;
114-
lobby.rooms[user.room].server = new GameServer(room);
115+
this.rooms[user.room].started = true;
116+
this.rooms[user.room].server = new GameServer(room);
115117

116118
server.writeAll('s' + user.room);
117119
break;
118-
119-
default: logger.warn('Unknown lobby packet: ' + data);
120+
121+
default: log.warn('Unknown lobby packet: %s', data);
120122
}
121123
});
122124

123-
server.on('chat', function(user, text) {
125+
server.on('chat', (user, text) => {
124126
var message = '<b>' + user.name + '</b>: ' + text;
125127

126128
if(text[0] != '/') {
127129
if(user.admin) {
128130
message = '<font color="#ff0000">' + message + '</font>';
129131
}
130132

131-
lobby.history.push('c' + message);
132-
lobby.history = lobby.history.slice(-40);
133+
this.history.push('c' + message);
134+
this.history = this.history.slice(-40);
133135

134136
server.writeAll('c' + message);
135137
} else {
@@ -150,46 +152,46 @@ function LobbyServer() {
150152
}
151153
});
152154

153-
server.on('disconnect', function(user) {
154-
logger.info(user.name + ' disconnected');
155+
server.on('disconnect', user => {
156+
log.info(' %s disconnected', user.name );
155157
user.writeOthers('l'+user.room+'`'+user.fullname);
156158

157-
lobby.userIds.splice(lobby.userIds.indexOf(user.id), 1);
159+
this.userIds.splice(this.userIds.indexOf(user.id), 1);
158160
});
159161

160-
server.start(lobby.port, function() {
161-
logger.info('Lobby server running on port ' + lobby.port);
162+
server.start(this.port, () => {
163+
log.info('Lobby server running on port %d', this.port);
162164
});
163-
}
164-
165-
LobbyServer.prototype.isValidRoom = function(id) {
166-
var numberId = parseInt(id, 10);
167-
if(isNaN(numberId)) {
168-
return id == "none";
169165
}
170-
return numberId >= 1 && numberId <= 12 && this.rooms[id].users.length < 4;
171-
}
172-
LobbyServer.prototype.getUniqueId = function() {
173-
while(true) {
174-
var id = Math.round(Math.random() * 9999);
175-
if(this.userIds.indexOf(id) > -1) continue;
176-
this.userIds.push(id);
177-
return id;
166+
isValidRoom(id) {
167+
var numberId = parseInt(id, 10);
168+
if(isNaN(numberId)) {
169+
return id == "none";
170+
}
171+
return numberId >= 1 && numberId <= 12 && this.rooms[id].users.length < 4;
172+
}
173+
getUniqueId() {
174+
while(true) {
175+
var id = Math.round(Math.random() * 9999);
176+
if(this.userIds.indexOf(id) > -1) continue;
177+
this.userIds.push(id);
178+
return id;
179+
}
178180
}
179181
}
180182

181-
182-
function Room() {
183-
this.users = [];
184-
this.started = false;
185-
this.server = null;
186-
}
187-
188-
Room.prototype.removeUser = function(user) {
189-
var index = this.users.indexOf(user);
190-
if(index > -1) {
191-
this.users.splice(this.users.indexOf(user), 1);
183+
class Room {
184+
constructor() {
185+
this.users = [];
186+
this.started = false;
187+
this.server = null;
188+
}
189+
removeUser(user) {
190+
var index = this.users.indexOf(user);
191+
if(index > -1) {
192+
this.users.splice(this.users.indexOf(user), 1);
193+
}
192194
}
193195
}
194196

195-
module.exports = LobbyServer;
197+
module.exports = LobbyServer;

0 commit comments

Comments
 (0)