From a8e4ad5a20fcc5d954b30db9d6d7700043848419 Mon Sep 17 00:00:00 2001 From: qmqz Date: Wed, 11 Mar 2026 11:58:51 +0800 Subject: [PATCH] =?UTF-8?q?dio=E5=8A=A0=E5=85=A5=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89contentType=20web=E6=9C=8D=E5=8A=A1=E5=99=A8=E5=8A=A0?= =?UTF-8?q?=E5=85=A5=20url=20token=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/base/http/TraceDio.dart | 9 ++++++++- lib/base/webserver/impl/ShelfWebServer.dart | 11 ++++++++--- lib/base/websocket/WebSocket.dart | 12 ++++++++++-- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/lib/base/http/TraceDio.dart b/lib/base/http/TraceDio.dart index 4960df0..2df249a 100644 --- a/lib/base/http/TraceDio.dart +++ b/lib/base/http/TraceDio.dart @@ -126,12 +126,14 @@ class TraceDio { {Object? data, Map? queryParameters, sf.Request? request, + String? contentType, Duration? receiveTimeout}) async { return await _dio.post(url, data: data, queryParameters: queryParameters, options: Options( receiveTimeout: receiveTimeout, + contentType: contentType, headers: getHeader(request: request))); } @@ -140,12 +142,14 @@ class TraceDio { {Object? data, Map? queryParameters, sf.Request? request, + String? contentType, Duration? receiveTimeout}) async { return await _dio.put(url, data: data, queryParameters: queryParameters, options: Options( receiveTimeout: receiveTimeout, + contentType: contentType, headers: getHeader(request: request))); } @@ -154,13 +158,16 @@ class TraceDio { {Object? data, Map? queryParameters, sf.Request? request, + String? contentType, Duration? receiveTimeout}) async { return await _dio.delete( url, data: data, queryParameters: queryParameters, options: Options( - receiveTimeout: receiveTimeout, headers: getHeader(request: request)), + contentType: contentType, + receiveTimeout: receiveTimeout, + headers: getHeader(request: request)), ); } } diff --git a/lib/base/webserver/impl/ShelfWebServer.dart b/lib/base/webserver/impl/ShelfWebServer.dart index a7ad3a9..958dec0 100644 --- a/lib/base/webserver/impl/ShelfWebServer.dart +++ b/lib/base/webserver/impl/ShelfWebServer.dart @@ -211,7 +211,7 @@ class ShelfWebServer implements WebServer { addRouter(k, p[0], handler); continue; } - addRouter(k, p[0], (req, [a, b, c, d, e, f]) async { + addRouter(k, p[0], (Request req, [a, b, c, d, e, f]) async { //从request中获取token并解码传入 bool auth = true; if (p.length >= 5) { @@ -223,7 +223,11 @@ class ShelfWebServer implements WebServer { if (auth) { String? token = req.headers["token"]; + if (token == null) { + token = req.url.queryParameters["token"]; + } bool check = true; + String checkMsg = "token为空"; if (tokenCheck != null) { //自定义token校验函数存在 var checkResult = await tokenCheck!(token); @@ -241,7 +245,8 @@ class ShelfWebServer implements WebServer { check = true; } catch (e) { //jwt解码失败 - print(e); + print("token: $token msg: $e"); + checkMsg = "身份认证失败"; check = false; } } else { @@ -250,7 +255,7 @@ class ShelfWebServer implements WebServer { } if (!check) { response = - Response.ok(jsonEncode({"code": -10000, "msg": "token为空"})); + Response.ok(jsonEncode({"code": -10000, "msg": checkMsg})); return setResponseHeader(response, p[1].type); } } diff --git a/lib/base/websocket/WebSocket.dart b/lib/base/websocket/WebSocket.dart index 77e3259..0b6dea4 100644 --- a/lib/base/websocket/WebSocket.dart +++ b/lib/base/websocket/WebSocket.dart @@ -22,7 +22,7 @@ class WebSocket { //判断是否启用自动重连 if (_config.reConnect && _reConnect) { //2秒后重连 - Future.delayed(Duration(seconds: 2), () { + Future.delayed(Duration(seconds: _config.reConnectTime), () { connect(); }); } @@ -56,6 +56,9 @@ class WebSocket { _timer = null; //尝试重连 _channel = null; + if (_config.onClose != null) { + _config.onClose!(); + } reConnect(); }); //定期发送心跳包 @@ -77,9 +80,14 @@ class WebSocket { class WebSocketConfig { String host; bool reConnect; + int reConnectTime; void Function(String) messgae; void Function()? onOpen; + void Function()? onClose; WebSocketConfig(this.host, this.messgae, - {this.reConnect = true, this.onOpen}); + {this.reConnect = true, + this.onOpen, + this.onClose, + this.reConnectTime = 2}); }