Así que no sé si esto es posible, pero uno de mis amigos cercanos me dio este script de node.js que se supone que hace lo siguiente:

Cuando alguien se conecta a un servidor de Minecraft con a.FreeMinecraftHost.com:25565 (ese es el puerto predeterminado de Minecraft, cuando tiene su servidor ejecutándose con el puerto predeterminado, los clientes no tienen que escribir un puerto) se supone que debe redirigir que digan a.FreeMinecraftHost.com:30000

Aquí está el código que me dio:

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();
  }
}
  });
});

El problema es que cuando lo ejecuto, no hace nada, el nodo no lo mantiene vivo ni nada, simplemente vuelvo instantáneamente al indicador

EDITAR ¡Lo tengo funcionando! Algo así, lo olvidé

server.listen(25565);

Al final, ahora puedo conectarme al servidor de Minecraft y funciona, pero cuando el cliente de Minecraft hace ping en su lista de servidores, se muestra como fuera de línea

0
Jeremy Sayers 8 jun. 2012 a las 05:41

1 respuesta

La mejor respuesta

Lo que quiere hacer es tener equilibrio de carga, sugeriría hacer una de dos cosas

A) nginx y pase de proxy

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) equilibrio de carga haproxy más información aquí http://haproxy.1wt.eu/

0
Jakub Oboza 8 jun. 2012 a las 12:39