transform server.js into an es6 class

This commit is contained in:
Romain Beaumont 2015-09-20 21:36:59 +02:00
parent 78ff667c1f
commit 6e399122bf

View file

@ -1,65 +1,65 @@
var net = require('net') var net = require('net');
, EventEmitter = require('events').EventEmitter var EventEmitter = require('events').EventEmitter;
, util = require('util') var Client = require('./client');
, Client = require('./client') var states = require('./transforms/serializer').states;
, states = require('./transforms/serializer').states
; class Server extends EventEmitter
{
constructor() {
super();
this.socketServer = null;
this.cipher = null;
this.decipher = null;
this.clients = {};
}
listen(port, host) {
var self = this;
var nextId = 0;
self.socketServer = net.createServer();
self.socketServer.on('connection', function(socket) {
var client = new Client(true);
client._end = client.end;
client.end = function end(endReason) {
endReason='{"text":"'+endReason+'"}';
if(client.state === states.PLAY) {
client.write('kick_disconnect', {reason: endReason});
} else if(client.state === states.LOGIN) {
client.write('disconnect', {reason: endReason});
}
client._end(endReason);
};
client.id = nextId++;
self.clients[client.id] = client;
client.on('end', function() {
delete self.clients[client.id];
});
client.setSocket(socket);
self.emit('connection', client);
});
self.socketServer.on('error', function(err) {
self.emit('error', err);
});
self.socketServer.on('close', function() {
self.emit('close');
});
self.socketServer.on('listening', function() {
self.emit('listening');
});
self.socketServer.listen(port, host);
}
close() {
var client;
for(var clientId in this.clients) {
if(!this.clients.hasOwnProperty(clientId)) continue;
client = this.clients[clientId];
client.end('ServerShutdown');
}
this.socketServer.close();
}
}
module.exports = Server; module.exports = Server;
function Server() {
EventEmitter.call(this);
this.socketServer = null;
this.cipher = null;
this.decipher = null;
this.clients = {};
}
util.inherits(Server, EventEmitter);
Server.prototype.listen = function(port, host) {
var self = this;
var nextId = 0;
self.socketServer = net.createServer();
self.socketServer.on('connection', function(socket) {
var client = new Client(true);
client._end = client.end;
client.end = function end(endReason) {
endReason='{"text":"'+endReason+'"}';
if(client.state === states.PLAY) {
client.write('kick_disconnect', {reason: endReason});
} else if(client.state === states.LOGIN) {
client.write('disconnect', {reason: endReason});
}
client._end(endReason);
};
client.id = nextId++;
self.clients[client.id] = client;
client.on('end', function() {
delete self.clients[client.id];
});
client.setSocket(socket);
self.emit('connection', client);
});
self.socketServer.on('error', function(err) {
self.emit('error', err);
});
self.socketServer.on('close', function() {
self.emit('close');
});
self.socketServer.on('listening', function() {
self.emit('listening');
});
self.socketServer.listen(port, host);
};
Server.prototype.close = function() {
var client;
for(var clientId in this.clients) {
if(!this.clients.hasOwnProperty(clientId)) continue;
client = this.clients[clientId];
client.end('ServerShutdown');
}
this.socketServer.close();
};