修正切换节点长连接还存在的问题,目前使用切换之后先关闭服务在启动服务

(cherry picked from commit 3c0c6dde0969fa9847fa77db78abbb6a098e50ef)
This commit is contained in:
Rust 2025-11-01 04:59:08 -07:00 committed by speakeloudest
parent b7a78aa76a
commit b3ee1cc6dc

View File

@ -1011,28 +1011,54 @@ class KRHomeController extends GetxController with WidgetsBindingObserver {
KRLogUtil.kr_i('💾 保存新节点选择: $tag', tag: 'HomeController');
await KRSecureStorage().kr_saveData(key: 'SELECTED_NODE_TAG', value: tag);
// 🔧 VPN连接以断开所有现有长连接
KRLogUtil.kr_i('🔄 停止VPN连接以断开现有连接...', tag: 'HomeController');
// 🔧 A增强VPN连接以断开所有现有长连接
KRLogUtil.kr_i('🔄 [增强] 停止VPN连接以断开现有连接...', tag: 'HomeController');
await KRSingBoxImp.instance.kr_stop(); // VPN
KRLogUtil.kr_i('⏳ 等待VPN完全停止...', tag: 'HomeController');
await Future.delayed(const Duration(milliseconds: 800)); //
// 🚀 A增强
KRLogUtil.kr_i('⏳ [增强] 等待VPN完全停止1500ms确保旧连接全部断开...', tag: 'HomeController');
await Future.delayed(const Duration(milliseconds: 1500)); // 800ms增加到1500ms
KRLogUtil.kr_i('🔄 启动VPN并应用新节点: $tag', tag: 'HomeController');
KRLogUtil.kr_i('🔄 [增强] 启动VPN并应用新节点: $tag', tag: 'HomeController');
await KRSingBoxImp.instance.kr_start(); // VPN使
// VPN启动完成
KRLogUtil.kr_i('等待VPN启动完成...', tag: 'HomeController');
await Future.delayed(const Duration(milliseconds: 1500)); //
// 🚀 A增强VPN完全建立
KRLogUtil.kr_i('[增强] 等待VPN完全启动2500ms确保新连接完全建立...', tag: 'HomeController');
await Future.delayed(const Duration(milliseconds: 2500)); // 1500ms增加到2500ms
// UI
kr_cutSeletedTag.value = tag;
kr_updateConnectionInfo();
kr_moveToSelectedNode();
// 🔧
// UI继续显示"正在连接"
await Future.delayed(const Duration(milliseconds: 200)); //
// 🚀 A增强
KRLogUtil.kr_i('⏳ [增强] 等待活动组更新500ms...', tag: 'HomeController');
await Future.delayed(const Duration(milliseconds: 500)); // 200ms增加到500ms
// 🚀 A增强
KRLogUtil.kr_i('🔍 [增强] 验证节点切换是否成功...', tag: 'HomeController');
try {
//
final activeGroups = KRSingBoxImp.instance.kr_activeGroups;
final selectGroup = activeGroups.firstWhere(
(group) => group.tag == 'select',
orElse: () => throw Exception('未找到 select 组'),
);
KRLogUtil.kr_i('📊 [增强] Select组当前选中: ${selectGroup.selected}', tag: 'HomeController');
KRLogUtil.kr_i('📊 [增强] 目标节点: $tag', tag: 'HomeController');
if (selectGroup.selected != tag) {
KRLogUtil.kr_w('⚠️ [增强] 节点选择验证失败,实际选中: ${selectGroup.selected}', tag: 'HomeController');
//
} else {
KRLogUtil.kr_i('✅ [增强] 节点选择验证成功!', tag: 'HomeController');
}
} catch (e) {
KRLogUtil.kr_w('⚠️ [增强] 节点验证过程出错: $e', tag: 'HomeController');
}
//
_kr_updateLatencyOnConnected();
KRLogUtil.kr_i('✅ 节点切换成功(已重启VPN断开旧连接): $tag', tag: 'HomeController');