2012-06-08 37 views
0

,所以我不知道这甚至有可能,但我的密友给了我这个Node.js的是应该做下面的脚本:Node.js的重定向从域名到特定端口

当某人通过a.FreeMinecraftHost.com:25565(这是minecraft的默认端口连接到Minecraft服务器时,当您的服务器使用默认端口运行时,客户端不必键入端口),它应该重定向他们说a.FreeMinecraftHost.com:30000

这是他给我的代码:

var Socket = require('net').Socket; 
var Server = require('net').Server; 
var net = require('net'); 

var SERVERMAP = { 
    'a.FreeMinecraftHost.com:25565': ['localhost', 30000], 
    'b.FreeMinecraftHost.com:25565': ['localhost', 30001], 
    'c.FreeMinecraftHost.com:25565': ['localhost', 30002], 
    'd.FreeMinecraftHost.com:25565': ['localhost', 30003] 
}; 
var server = new Server(); 
server.on('connection', function(client) { 
    var buffer = ''; 
    var authed = false; 

    client.on('data', function(data) { 
    if(!authed) buffer += data; 

    if(!authed) { 
     var parser = new RegExp('([a-z0-9_]+);([^:]+):([0-9]+)', 'ig'); 
     var parts = parser.exec(buffer.toString().replace(/\0/ig, '')); 

     if(parts) { 
     var serverString = parts[2] + ':' + parts[3]; 
     authed=true; 

     if(SERVERMAP[serverString]) { 
      var socket = new Socket(); 

      socket.connect(SERVERMAP[serverString][1], SERVERMAP[serverString][0],  function() { 
     socket.write(buffer); 

     socket.pipe(client); 
     client.pipe(socket); 
     }); 
    } else { 
     client.end(); 
    } 
    } else { 
    client.end(); 
    } 
} 
    }); 
}); 

的问题是,当我运行它,它什么都不做,节点不让它活着或任何东西,我只是瞬间回到了提示

编辑 我得到它的工作!样的,我忘了,

server.listen(25565); 

末,所以现在我可以连接到我的世界服务器和它的作品,但是当我的世界客户端的Ping它在你的服务器列表,它显示为脱机

回答

0

你想要做的是具有负载平衡我建议做两件事情

一)nginx的和代理通

upstream minecraft_servers { 
    server 127.0.0.1:30000; 
    server 127.0.0.1:30001; 
    server 127.0.0.1:30002; 
    server 127.0.0.1:30003; 
} 

server { 
    listen 25565; 

    location/{ 
    proxy_pass http://minecraft_servers; 
    } 
} 

b)HAProxy的负载平衡一个更多的信息在这里http://haproxy.1wt.eu/

+0

你的代码(部分a)没有为nginx工作? –