robot_webFenli/robots/majiang/robot_mj_cs/test_disconnect_logic.java

41 lines
1.6 KiB
Java

// 测试断开连接逻辑的简化示例
public class DisconnectTest {
// 模拟现有的断开逻辑
public void disconnectFromGameServer(String connecId) {
System.out.println("=== 断开连接流程 ===");
// 1. 标记为非活跃
System.out.println("1. 标记连接为非活跃状态");
// 2. 停止监视器(定时任务)
System.out.println("2. 停止连接监视器定时任务");
// 这里会 cancel ScheduledFuture 任务
// 3. 移除事件监听器
System.out.println("3. 移除 TaurusClient 事件监听器");
// 这里会调用 client.removeEventListener()
// 4. 物理断开连接
System.out.println("4. 物理断开 TCP 连接");
System.out.println("=== 断开完成 ===\n");
}
public static void main(String[] args) {
DisconnectTest test = new DisconnectTest();
System.out.println("场景1: 正常主动断开");
test.disconnectFromGameServer("robot_123");
System.out.println("场景2: 如果只移除事件监听器会发生什么?");
System.out.println("- 定时任务仍在后台运行");
System.out.println("- 可能会继续尝试检测已断开的连接");
System.out.println("- 造成资源浪费和潜在的并发问题\n");
System.out.println("结论: 两个操作缺一不可!");
System.out.println("• removeEventListeners: 防止接收网络事件");
System.out.println("• stopConnectionWatcher: 释放定时任务资源");
}
}