0

そのため、これが可能かどうかはわかりませんが、親しい友人の 1 人が、次のことを行うこの 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);

最後に、これで Minecraft サーバーに接続できるようになり、動作しますが、Minecraft クライアントがサーバー リストで ping を実行すると、オフラインとして表示されます。

4

1 に答える 1

0

あなたがしたいことは、負荷分散を行うことです。2つのことのいずれかを行うことをお勧めします

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/

于 2012-06-08T08:39:25.330 に答える