2012-06-08 72 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工作? –