diff --git a/lib/EasyDartModule.dart b/lib/EasyDartModule.dart index 90ca01f..c402ad0 100644 --- a/lib/EasyDartModule.dart +++ b/lib/EasyDartModule.dart @@ -67,7 +67,11 @@ class EasyDartModule { WebServer.setInstance(ShelfWebServer(logger)); //Dio组件 TraceDio.setInstance(TraceDio(logger)); + } else { + //无日志Dio + TraceDio.setInstance(TraceDio(null)); } + if (webSocketConfig != null) { WebSocket.setInstance(WebSocket(webSocketConfig)); websocket.connect(); diff --git a/lib/base/http/TraceDio.dart b/lib/base/http/TraceDio.dart index db24773..c458932 100644 --- a/lib/base/http/TraceDio.dart +++ b/lib/base/http/TraceDio.dart @@ -5,20 +5,20 @@ import 'package:uuid/uuid.dart'; class TraceDio { final Dio _dio; - final Logger _logger; + final Logger? _logger; final Uuid uuid = Uuid(); static late TraceDio _traceDio; String? token; - TraceDio(Logger logger) + TraceDio(Logger? logger) : _dio = Dio(), _logger = logger { // 配置 Dio // 设置连接超时 - _dio.options.connectTimeout = Duration(seconds: 5); + _dio.options.connectTimeout = Duration(seconds: 60); // 设置接收超时 - _dio.options.receiveTimeout = Duration(seconds: 5); + _dio.options.receiveTimeout = Duration(seconds: 60); //保留原始大小写 _dio.options.preserveHeaderCase = true; @@ -36,7 +36,7 @@ class TraceDio { options.headers['X-Span-ID'] = spanId; } // 记录请求日志 - _logger.info('Sending request: ${options.method} ${options.uri}', + _logger?.info('Sending request: ${options.method} ${options.uri}', tag: "DIO", traceId: traceId, spanId: spanId); return handler.next(options); // 继续请求 }, @@ -44,7 +44,7 @@ class TraceDio { // 记录响应日志 String? traceId = response.headers.value('X-Trace-ID'); String? spanId = response.headers.value('X-Span-ID'); - _logger.info( + _logger?.info( 'Response received: ${response.statusCode} ${response.statusMessage}', tag: "DIO", traceId: traceId, @@ -58,7 +58,7 @@ class TraceDio { // 记录错误日志 String? traceId = e.requestOptions.headers['X-Trace-ID']; String? spanId = e.requestOptions.headers['X-Span-ID']; - _logger.error('Request failed: ${e.message}', + _logger?.error('Request failed: ${e.message}', tag: "DIO", traceId: traceId, spanId: spanId); return handler.next(e); // 继续处理错误 }, @@ -93,45 +93,57 @@ class TraceDio { Future get(String url, {Map? queryParameters, sf.Request? request, - ResponseType? responseType}) async { + ResponseType? responseType, + Duration? receiveTimeout}) async { return await _dio.get(url, queryParameters: queryParameters, options: Options( - headers: getHeader(request: request), responseType: responseType)); + receiveTimeout: receiveTimeout, + headers: getHeader(request: request), + responseType: responseType)); } // 发起 POST 请求 Future post(String url, {Object? data, Map? queryParameters, - sf.Request? request}) async { + sf.Request? request, + Duration? receiveTimeout}) async { return await _dio.post(url, data: data, queryParameters: queryParameters, - options: Options(headers: getHeader(request: request))); + options: Options( + receiveTimeout: receiveTimeout, + headers: getHeader(request: request))); } // 发起 PUT 请求 Future put(String url, {Object? data, Map? queryParameters, - sf.Request? request}) async { + sf.Request? request, + Duration? receiveTimeout}) async { return await _dio.put(url, data: data, queryParameters: queryParameters, - options: Options(headers: getHeader(request: request))); + options: Options( + receiveTimeout: receiveTimeout, + headers: getHeader(request: request))); } // 发起 DELETE 请求 Future delete(String url, {Object? data, Map? queryParameters, - sf.Request? request}) async { + sf.Request? request, + Duration? receiveTimeout}) async { return await _dio.delete( url, data: data, queryParameters: queryParameters, - options: Options(headers: getHeader(request: request)), + options: Options( + receiveTimeout: receiveTimeout, + headers: getHeader(request: request)), ); } } diff --git a/lib/base/mqtt/mqtt.dart b/lib/base/mqtt/mqtt.dart index aa1f490..4bf1625 100644 --- a/lib/base/mqtt/mqtt.dart +++ b/lib/base/mqtt/mqtt.dart @@ -1,3 +1,5 @@ +import 'dart:convert'; + import 'package:mqtt5_client/mqtt5_client.dart'; import 'package:mqtt5_client/mqtt5_server_client.dart'; @@ -28,8 +30,9 @@ class Mqtt { await _client?.connect(_config.username, _config.password); _client?.updates.listen((List> message) { final recMess = message[0].payload as MqttPublishMessage; - final payload = - MqttUtilities.bytesToStringAsString(recMess.payload.message!); + final payload = Utf8Decoder().convert(recMess.payload.message!); + // final payload = + // MqttUtilities.bytesToStringAsString(recMess.payload.message!); _config.messgae(message[0].topic!, payload); }); _config.topic?.forEach((topic) { @@ -54,7 +57,7 @@ class Mqtt { void publish(String topic, String msg, {int qos = 0}) { var payload = MqttPayloadBuilder(); - payload.addString(msg); + payload.addUTF8String(msg); _client?.publishMessage( topic, MqttUtilities.getQosLevel(qos), payload.payload!); }