所以我不知道这是否可行,但我的一位亲密的朋友给了我这个应该执行以下操作的node.js脚本:
当有人使用a.FreeMinecraftHost.com:25565连接到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);
最后,所以现在我可以连接到Minecraft服务器并且它可以工作,但是当Minecraft客户端在服务器列表中ping它时,它显示为离线
答案 0 :(得分:0)
你想要做的是拥有负载平衡,我建议做两件事之一
a)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/