在 UtilSearchNasIp 中添加探测开始时间记录和总耗时打印,增强了命中记录的调试信息;更新相关方法以传递开始时间参数。

This commit is contained in:
2026-07-17 17:48:16 +08:00
parent 25a07cbd3b
commit 744e768d3a
+22 -9
View File
@@ -20,6 +20,7 @@ class UtilSearchNasIp {
return nasIp;
}
final startedAt = DateTime.now();
final preUrl = await _resolvePreUrl();
final dio = Dio(
BaseOptions(
@@ -39,8 +40,13 @@ class UtilSearchNasIp {
cancelToken: cancelToken,
preUrl: preUrl,
host: host,
startedAt: startedAt,
),
]);
if (nasIp == null) {
final elapsedMs = DateTime.now().difference(startedAt).inMilliseconds;
debugPrint('NAS 探测未命中,总耗时: ${elapsedMs}ms');
}
return nasIp;
} finally {
dio.close(force: true);
@@ -66,30 +72,37 @@ class UtilSearchNasIp {
required CancelToken cancelToken,
required String preUrl,
required int host,
required DateTime startedAt,
}) async {
if (cancelToken.isCancelled || nasIp != null) return;
final target = '$preUrl$host$_probePath';
try {
await dio.get<dynamic>(target, cancelToken: cancelToken);
_onHit(preUrl, host, cancelToken);
_onHit(preUrl, host, cancelToken, startedAt);
} on DioException catch (error) {
if (error.type == DioExceptionType.cancel) return;
// 带 response 的 DioException 也表示已连通
if (error.response != null) {
_onHit(preUrl, host, cancelToken);
_onHit(preUrl, host, cancelToken, startedAt);
}
} catch (_) {
// 超时 / 连接失败:未命中
}
}
/// 记录命中:写 [nasIp]、打印并取消其余请求。
static void _onHit(String preUrl, int host, CancelToken cancelToken) {
/// 记录命中:写 [nasIp]、打印 IP 与总耗时,并取消其余请求。
static void _onHit(
String preUrl,
int host,
CancelToken cancelToken,
DateTime startedAt,
) {
if (nasIp != null) return;
final ip = '${_hostPrefix(preUrl)}$host';
nasIp = ip;
debugPrint('NAS IP: $ip');
final elapsedMs = DateTime.now().difference(startedAt).inMilliseconds;
debugPrint('NAS IP: $ip,探测总耗时: ${elapsedMs}ms');
if (!cancelToken.isCancelled) {
cancelToken.cancel('nas-found');
}
@@ -108,15 +121,15 @@ class UtilSearchNasIp {
// 1) Auth 页静默探测(不阻塞登录):
//
// import 'dart:async';
// import 'package:recording_tool/core/utils/util_getNasIp.dart';
// import 'package:recording_tool/core/utils/util_search_nasIp.dart';
//
// WidgetsBinding.instance.addPostFrameCallback((_) {
// unawaited(UtilGetNasIp.discover());
// unawaited(UtilSearchNasIp.discover());
// });
//
// 2) 业务侧读取已命中 IP
//
// final ip = UtilGetNasIp.nasIp;
// final ip = UtilSearchNasIp.nasIp;
// if (ip != null) {
// final base = 'http://$ip:5666';
// // 使用 base 访问 NAS...
@@ -124,6 +137,6 @@ class UtilSearchNasIp {
//
// 3) 主动等待探测结果(少用,会阻塞当前异步流程):
//
// final ip = await UtilGetNasIp.discover();
// final ip = await UtilSearchNasIp.discover();
// debugPrint('result: $ip');
//