From 610f652141b359a12fa0b8d467e0cdfca4b74c26 Mon Sep 17 00:00:00 2001 From: mlus <1319237806@qq.com> Date: Wed, 15 Oct 2025 20:36:54 +0800 Subject: [PATCH 1/2] keep socket waiting test --- .../playersync/sync/chat/ChatSyncClient.java | 40 +-------------- .../playersync/sync/chat/ChatSyncServer.java | 50 ++----------------- 2 files changed, 6 insertions(+), 84 deletions(-) diff --git a/src/main/java/vip/fubuki/playersync/sync/chat/ChatSyncClient.java b/src/main/java/vip/fubuki/playersync/sync/chat/ChatSyncClient.java index 8915bf9..e308615 100644 --- a/src/main/java/vip/fubuki/playersync/sync/chat/ChatSyncClient.java +++ b/src/main/java/vip/fubuki/playersync/sync/chat/ChatSyncClient.java @@ -23,9 +23,6 @@ public class ChatSyncClient { private static final int RECONNECT_DELAY = 5000; private static final int MAX_RECONNECT_ATTEMPTS = 10; - private static volatile long lastHeartbeat = System.currentTimeMillis(); - private static final long HEARTBEAT_INTERVAL = 15000; - public void run() { int reconnectAttempts = 0; @@ -48,28 +45,19 @@ public class ChatSyncClient { 15000 ); - clientSocket.setSoTimeout(30000); + clientSocket.setSoTimeout(0); out = new PrintWriter(new BufferedWriter( new OutputStreamWriter(clientSocket.getOutputStream())), true); PlayerSync.LOGGER.info("Successfully connected to chat server"); reconnectAttempts = 0; - lastHeartbeat = System.currentTimeMillis(); - - startHeartbeatMonitor(); BufferedReader in = new BufferedReader( new InputStreamReader(clientSocket.getInputStream())); String serverMessage; while (running && (serverMessage = in.readLine()) != null) { - lastHeartbeat = System.currentTimeMillis(); - - if ("".equals(serverMessage)) { - continue; - } - PlayerSync.LOGGER.info("Received message from chat server: " + serverMessage); Component textComponents = Component.nullToEmpty(serverMessage); if(playerList != null){ @@ -104,32 +92,6 @@ public class ChatSyncClient { } } - private void startHeartbeatMonitor() { - Thread heartbeatThread = new Thread(() -> { - while (running && clientSocket != null && !clientSocket.isClosed()) { - try { - Thread.sleep(10000); // 每10秒检查一次 - - long now = System.currentTimeMillis(); - if (now - lastHeartbeat > HEARTBEAT_INTERVAL) { - PlayerSync.LOGGER.warn("No heartbeat for {}ms, sending test message", - now - lastHeartbeat); - - // 发送测试消息检查连接 - if (out != null) { - out.println(""); - } - } - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - break; - } - } - }, "ChatSync-Heartbeat"); - heartbeatThread.setDaemon(true); - heartbeatThread.start(); - } - private void closeConnection() { try { if (out != null) { diff --git a/src/main/java/vip/fubuki/playersync/sync/chat/ChatSyncServer.java b/src/main/java/vip/fubuki/playersync/sync/chat/ChatSyncServer.java index 6697d6b..0080a9b 100644 --- a/src/main/java/vip/fubuki/playersync/sync/chat/ChatSyncServer.java +++ b/src/main/java/vip/fubuki/playersync/sync/chat/ChatSyncServer.java @@ -3,7 +3,10 @@ package vip.fubuki.playersync.sync.chat; import vip.fubuki.playersync.PlayerSync; import vip.fubuki.playersync.config.JdbcConfig; -import java.io.*; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.net.SocketTimeoutException; @@ -26,12 +29,10 @@ public class ChatSyncServer { serverSocket.setReuseAddress(true); PlayerSync.LOGGER.info("Chat server started successfully on port {}", JdbcConfig.CHAT_SERVER_PORT.get()); - startHeartbeatBroadcast(); - while (running && !Thread.currentThread().isInterrupted()) { try { Socket newSocket = serverSocket.accept(); - newSocket.setSoTimeout(30000); + newSocket.setSoTimeout(0); SocketList.add(newSocket); executorService.submit(() -> handleClient(newSocket)); PlayerSync.LOGGER.info("New client connected, total clients: {}", SocketList.size()); @@ -96,47 +97,6 @@ public class ChatSyncServer { } } - private void startHeartbeatBroadcast() { - Thread heartbeatThread = new Thread(() -> { - while (running) { - try { - Thread.sleep(20000); - broadcastHeartbeat(); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - break; - } - } - }, "ChatSync-Server-Heartbeat"); - heartbeatThread.setDaemon(true); - heartbeatThread.start(); - } - - private void broadcastHeartbeat() { - Iterator iterator = SocketList.iterator(); - while (iterator.hasNext()) { - Socket socket = iterator.next(); - if (!socket.isClosed()) { - try { - PrintWriter writer = new PrintWriter( - new BufferedWriter( - new OutputStreamWriter(socket.getOutputStream())), true); - writer.println(""); - } catch (IOException e) { - PlayerSync.LOGGER.warn("Failed to send heartbeat to client, removing: {}", e.getMessage()); - iterator.remove(); - try { - socket.close(); - } catch (IOException ex) { - // Ignore - } - } - } else { - iterator.remove(); - } - } - } - public void shutdown() { running = false; try { From 3cfa05368fade4bd74c06ef2e7b35a7a624ec6bf Mon Sep 17 00:00:00 2001 From: mlus <1319237806@qq.com> Date: Sat, 18 Oct 2025 01:16:33 +0800 Subject: [PATCH 2/2] remove unnecessary logger --- .../java/vip/fubuki/playersync/sync/chat/ChatSyncClient.java | 3 ++- .../java/vip/fubuki/playersync/sync/chat/ChatSyncServer.java | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/vip/fubuki/playersync/sync/chat/ChatSyncClient.java b/src/main/java/vip/fubuki/playersync/sync/chat/ChatSyncClient.java index e308615..35ddd45 100644 --- a/src/main/java/vip/fubuki/playersync/sync/chat/ChatSyncClient.java +++ b/src/main/java/vip/fubuki/playersync/sync/chat/ChatSyncClient.java @@ -58,11 +58,12 @@ public class ChatSyncClient { String serverMessage; while (running && (serverMessage = in.readLine()) != null) { - PlayerSync.LOGGER.info("Received message from chat server: " + serverMessage); Component textComponents = Component.nullToEmpty(serverMessage); if(playerList != null){ playerList.getServer().execute(() -> playerList.broadcastSystemMessage(textComponents, false)); + }else { + PlayerSync.LOGGER.info("Received message from chat server: " + serverMessage); } } diff --git a/src/main/java/vip/fubuki/playersync/sync/chat/ChatSyncServer.java b/src/main/java/vip/fubuki/playersync/sync/chat/ChatSyncServer.java index 0080a9b..8f3326d 100644 --- a/src/main/java/vip/fubuki/playersync/sync/chat/ChatSyncServer.java +++ b/src/main/java/vip/fubuki/playersync/sync/chat/ChatSyncServer.java @@ -55,7 +55,6 @@ public class ChatSyncServer { String message; while (running && (message = reader.readLine()) != null) { - PlayerSync.LOGGER.info("Received message from {}: {}", clientInfo, message); broadcastMessage(socket, message); }