Skip to content

Commit

Permalink
Add masterserver.downloadServerList function
Browse files Browse the repository at this point in the history
  • Loading branch information
gdaws committed Oct 1, 2012
1 parent 0e2a62b commit 576213b
Showing 1 changed file with 55 additions and 0 deletions.
55 changes: 55 additions & 0 deletions lib/masterserver.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
var net = require("net");
var _ = require("underscore");
var constants = require("./constants");

function defaultOptions(){
return {
hostname: "sauerbraten.org",
port: constants.MASTERSERVER_PORT
};
}

function downloadServerList(options){

options = _.extend(defaultOptions(), {callback:function(){}}, options);

var socket = new net.Socket();
var buffer = "";

socket.setEncoding("ascii");

socket.on("connect", function(){
socket.write("list\n");
});

socket.on("error", function(exception){
options.callback(null, exception);
});

socket.on("data", function(data){
buffer += data;
});

socket.on("end", function(){

var servers = [];
var lines = buffer.split("\n");

for(var i = 0; i < lines.length; i++){
var args = lines[i].split(" ");
if(args.length >= 3){
var ip = args[1];
var port = parseInt(args[2], 10);
servers.push([ip, port]);
}
}

options.callback(servers);
});

socket.connect(options.port, options.hostname);
}

module.exports = {
downloadServerList: downloadServerList
};

0 comments on commit 576213b

Please sign in to comment.