Skip to content

Commit

Permalink
refactor: 重构代码提高可读性和效率
Browse files Browse the repository at this point in the history
  • Loading branch information
shulng committed Sep 7, 2024
1 parent 168bbf7 commit 11dbfe8
Showing 1 changed file with 18 additions and 22 deletions.
40 changes: 18 additions & 22 deletions src/main/java/cc/baka9/catseedlogin/bungee/Communication.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package cc.baka9.catseedlogin.bungee;

import cc.baka9.catseedlogin.util.CommunicationAuth;
import net.md_5.bungee.api.ProxyServer;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.Socket;

import cc.baka9.catseedlogin.util.CommunicationAuth;
import net.md_5.bungee.api.ProxyServer;

/**
* bc 与 bukkit 的通讯交流
*/
Expand All @@ -16,33 +16,21 @@ public class Communication {
private static final int PORT = Config.Port;

public static int sendConnectRequest(String playerName) {
try (Socket socket = getSocket(); BufferedWriter bufferedWriter = getSocketBufferedWriter(socket)) {
bufferedWriter.write("Connect");
bufferedWriter.newLine();
bufferedWriter.write(playerName);
bufferedWriter.newLine();
bufferedWriter.flush();
try (Socket socket = getSocket(); BufferedWriter writer = getSocketBufferedWriter(socket)) {
writeMessage(writer, "Connect", playerName);
return socket.getInputStream().read();
} catch (IOException e) {
handleIOException(e);
return 0;
}
return 0;
}

public static void sendKeepLoggedInRequest(String playerName) {
try (Socket socket = getSocket(); BufferedWriter bufferedWriter = getSocketBufferedWriter(socket)) {
bufferedWriter.write("KeepLoggedIn");
bufferedWriter.newLine();
bufferedWriter.write(playerName);
bufferedWriter.newLine();
try (Socket socket = getSocket(); BufferedWriter writer = getSocketBufferedWriter(socket)) {
long currentTime = System.currentTimeMillis();
String time = String.valueOf(currentTime);
bufferedWriter.write(time);
bufferedWriter.newLine();
String sign = CommunicationAuth.encryption(playerName, time, Config.AuthKey);
bufferedWriter.write(sign);
bufferedWriter.newLine();
bufferedWriter.flush();
writeMessage(writer, "KeepLoggedIn", playerName, time, sign);
} catch (IOException e) {
handleIOException(e);
}
Expand All @@ -53,15 +41,23 @@ private static Socket getSocket() throws IOException {
return new Socket(HOST, PORT);
} catch (IOException e) {
ProxyServer.getInstance().getLogger().warning("§c请检查装载登录插件的子服是否在 bungeecord.yml 中开启了bungeecord功能,以及Host和Port是否与bc端的配置相同");
throw new IOException(e);
throw e;
}
}

private static BufferedWriter getSocketBufferedWriter(Socket socket) throws IOException {
return new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
}

private static void writeMessage(BufferedWriter writer, String... messages) throws IOException {
for (String message : messages) {
writer.write(message);
writer.newLine();
}
writer.flush();
}

private static void handleIOException(IOException e) {
ProxyServer.getInstance().getLogger().severe("发生 I/O 异常: " + e.getMessage());
}
}
}

0 comments on commit 11dbfe8

Please sign in to comment.