41 lines
1.6 KiB
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: 释放定时任务资源");
|
|
}
|
|
} |