Skip to content

Instantly share code, notes, and snippets.

@takaheraw
Created January 4, 2013 02:44
Show Gist options
  • Save takaheraw/4449486 to your computer and use it in GitHub Desktop.
Save takaheraw/4449486 to your computer and use it in GitHub Desktop.
var net = require('net');
var readline = require('readline');
var server = net.createServer();
server.maxConnections = 3;
function Client(socket){
this.socket = socket;
}
Client.prototype.writeData = function(d){
var socket = this.socket;
if(socket.writable){
var key = socket.remoteAddress + ':' + socket.remotePort;
process.stdout.write('[' + key + '] - ' + d);
socket.write('[R]' + d);
}
};
var clients = {}
server.on('connection', function(socket){
var status = server.connections + '/' + server.maxConnections;
var key = socket.remoteAddress + ':' + socket.remotePort;
console.log('Connection Start(' + status + ') - ' + key);
clients[key] = new Client(socket);
});
server.on('connection', function(socket){
var data = '';
var newline = /\r\n|\n/;
socket.on('data', function(chunk){
data += chunk.toString();
var key = socket.remoteAddress + ':' + socket.remotePort;
if(newline.test(data)){
clients[key].writeData(data);
data = '';
}
});
});
server.on('connection', function(socket){
var key = socket.remoteAddress + ':' + socket.remotePort;
socket.on('end', function(){
var status = server.connections + '/' + server.maxConnections;
console.log('Connection End(' + status + ') - ' + key);
delete clients[key];
});
});
server.on('close', function(){
console.log('Server Closed');
});
server.listen(11111, '127.0.0.1', function(){
var addr = server.address();
console.log('Listening Start on Server - ' + addr.address + ':' + addr.port);
});
var rl = readline.createInterface(process.stdin, process.stdout);
rl.on('SIGINT', function(){
for(var i in clients){
var socket = clients[i].socket;
socket.end();
}
server.close();
rl.close();
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment