#Пример Tower Client
#Java
java
public class TowerClient {
public static void main(String[] args) throws Exception {
Socket socket = new Socket("proxy-host", 25580);
Gson gson = new Gson();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream()));
BufferedReader reader = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
// 1. Аутентификация
JsonObject auth = new JsonObject();
auth.addProperty("type", "auth");
auth.addProperty("login", "admin");
auth.addProperty("password", "changeme");
writer.write(gson.toJson(auth) + "\n");
writer.flush();
String response = reader.readLine();
System.out.println("Auth: " + response);
// 2. Регистрация сервера
JsonObject register = new JsonObject();
register.addProperty("type", "register");
register.addProperty("name", "survival-1");
register.addProperty("host", "127.0.0.1");
register.addProperty("port", 25565);
register.addProperty("serverType", "survival");
register.addProperty("maxPlayers", 50);
writer.write(gson.toJson(register) + "\n");
writer.flush();
response = reader.readLine();
System.out.println("Register: " + response);
// 3. Heartbeat
while (true) {
JsonObject heartbeat = new JsonObject();
heartbeat.addProperty("type", "heartbeat");
heartbeat.addProperty("timestamp", System.currentTimeMillis());
writer.write(gson.toJson(heartbeat) + "\n");
writer.flush();
Thread.sleep(10000);
}
}
}💡 TIP: В production используйте Netty клиент с автоматическим реконнектом вместо raw сокетов.