Skip to content

Instantly share code, notes, and snippets.

@reconbot
Created November 4, 2011 17:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save reconbot/1339925 to your computer and use it in GitHub Desktop.
Save reconbot/1339925 to your computer and use it in GitHub Desktop.
udp relaying machine
var dgram = require('dgram');
var relay = function(port, dest){
var server = dgram.createSocket('udp4');
var client = dgram.createSocket('udp4');
var clients = [];
if(!Array.isArray(dest)){
dest = [ dest ];
}
dest.forEach(function(v){
var conn = {};
conn.port = Number(v.port) || 123;
if(!v.host){
console.log('skipping', v);
return;
}
conn.host = v.host;
clients.push(conn);
});
server.on('listening', function(){
var address = server.address();
console.log("Server listening on " + address.address + ":" + address.port);
console.log("Relaying to:");
clients.forEach(function(v){
console.log("\t" + v.host + ":" +v.port);
});
});
server.on('message', function(msg, rinfo){
clients.forEach(function(v){
client.send(msg, 0, msg.length, v.port, v.host, function(err){
console.log("Sent " + msg.length + " bytes to " + v.host + ":" + v.port);
if(err){
console.log('Error', err);
}
});
});
});
server.bind(port);
};
relay( 62267, [
{host: 'localhost', port: 62268},
{host: 'localhost', port: 62269}
]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment