From 3a4d8aa5369cb9bd894b830163642b94730ede18 Mon Sep 17 00:00:00 2001 From: vera Date: Sat, 2 Dec 2023 03:20:23 +0800 Subject: [PATCH] fix(#14 #12) --- .vscode/launch.json | 25 ----------- .vscode/settings.json | 3 ++ example/ios/Podfile.lock | 2 +- example/lib/chat.dart | 34 +++++++------- example/lib/im.dart | 2 - example/lib/input_dialog.dart | 2 +- example/macos/Podfile.lock | 2 +- .../macos/Runner.xcodeproj/project.pbxproj | 2 +- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- example/pubspec.lock | 44 ++++++++---------- lib/manager/connect_manager.dart | 45 +++++++++++++------ 11 files changed, 74 insertions(+), 89 deletions(-) delete mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 13e5536..0000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "name": "wukongimfluttersdk", - "request": "launch", - "type": "dart" - }, - { - "name": "wukongimfluttersdk (profile mode)", - "request": "launch", - "type": "dart", - "flutterMode": "profile" - }, - { - "name": "wukongimfluttersdk (release mode)", - "request": "launch", - "type": "dart", - "flutterMode": "release" - } - ] -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..173967d --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "DockerRun.DisableDockerrc": true +} diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index d5cf44f..6b8c113 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -51,4 +51,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 70d9d25280d0dd177a5f637cdb0f0b0b12c6a189 -COCOAPODS: 1.11.2 +COCOAPODS: 1.14.3 diff --git a/example/lib/chat.dart b/example/lib/chat.dart index 41d7718..92e63d9 100644 --- a/example/lib/chat.dart +++ b/example/lib/chat.dart @@ -236,23 +236,23 @@ class ChatListDataState extends State { padding: const EdgeInsets.only(left: 0, top: 5, right: 0, bottom: 5), child: Row( children: [ - Container( - decoration: const BoxDecoration( - shape: BoxShape.rectangle, - borderRadius: BorderRadius.all(Radius.circular(20)), - color: Color.fromARGB(255, 215, 80, 1)), - width: 50, - alignment: Alignment.center, - height: 50, - margin: const EdgeInsets.fromLTRB(0, 0, 10, 0), - child: Text( - CommonUtils.getAvatar(uiMsg.wkMsg.fromUID), - style: const TextStyle( - color: Colors.white, - fontSize: 20, - fontWeight: FontWeight.bold), - ), - ), + // Container( + // decoration: const BoxDecoration( + // shape: BoxShape.rectangle, + // borderRadius: BorderRadius.all(Radius.circular(20)), + // color: Color.fromARGB(255, 215, 80, 1)), + // width: 50, + // alignment: Alignment.center, + // height: 50, + // margin: const EdgeInsets.fromLTRB(0, 0, 10, 0), + // child: Text( + // CommonUtils.getAvatar(uiMsg.wkMsg.fromUID), + // style: const TextStyle( + // color: Colors.white, + // fontSize: 20, + // fontWeight: FontWeight.bold), + // ), + // ), Expanded( child: Container( alignment: Alignment.centerLeft, diff --git a/example/lib/im.dart b/example/lib/im.dart index ed9be8d..9bfcef5 100644 --- a/example/lib/im.dart +++ b/example/lib/im.dart @@ -1,5 +1,3 @@ -import 'dart:ffi'; - import 'package:example/const.dart'; import 'package:wukongimfluttersdk/common/options.dart'; import 'package:wukongimfluttersdk/entity/channel.dart'; diff --git a/example/lib/input_dialog.dart b/example/lib/input_dialog.dart index b9a8d0b..614ff66 100644 --- a/example/lib/input_dialog.dart +++ b/example/lib/input_dialog.dart @@ -37,7 +37,7 @@ class _InputDialogState extends State { children: [ TextField( controller: _textEditingController, - maxLength: 12, + maxLength: 120, onChanged: (v) { channelID = v; }, diff --git a/example/macos/Podfile.lock b/example/macos/Podfile.lock index c8788f4..6daf42c 100644 --- a/example/macos/Podfile.lock +++ b/example/macos/Podfile.lock @@ -45,4 +45,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 236401fc2c932af29a9fcf0e97baeeb2d750d367 -COCOAPODS: 1.11.2 +COCOAPODS: 1.14.3 diff --git a/example/macos/Runner.xcodeproj/project.pbxproj b/example/macos/Runner.xcodeproj/project.pbxproj index 3b5b226..877bd76 100644 --- a/example/macos/Runner.xcodeproj/project.pbxproj +++ b/example/macos/Runner.xcodeproj/project.pbxproj @@ -259,7 +259,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = ""; TargetAttributes = { 331C80D4294CF70F00263BE5 = { diff --git a/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 397f3d3..8fedab6 100644 --- a/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ =3.2.0-194.0.dev <4.0.0" + dart: ">=3.0.6 <4.0.0" flutter: ">=3.3.0" diff --git a/lib/manager/connect_manager.dart b/lib/manager/connect_manager.dart index 9189522..b051470 100644 --- a/lib/manager/connect_manager.dart +++ b/lib/manager/connect_manager.dart @@ -20,29 +20,44 @@ import '../proto/proto.dart'; import '../type/const.dart'; class _WKSocket { - final Socket _socket; - _WKSocket.newSocket(this._socket); + Socket? _socket; // 将 _socket 声明为可空类型 + bool _isListening = false; + static _WKSocket? _instance; + + _WKSocket._internal(this._socket); + + factory _WKSocket.newSocket(Socket socket) { + _instance ??= _WKSocket._internal(socket); + return _instance!; + } + void close() { - _socket.close(); + _socket?.close(); + _isListening = false; + _socket = null; // 现在可以将 _socket 设置为 null + _instance = null; } void send(Uint8List data) { try { - print('发消息'); - _socket.add(data); - _socket.flush(); + _socket?.add(data); // 使用安全调用操作符 + _socket?.flush(); } catch (e) { - Logs.debug('发送消息错误'); + Logs.debug('发送消息错误$e'); } } void listen(void Function(Uint8List data) onData, void Function() error) { - _socket.listen(onData, onError: (err) { - Logs.debug('socket断开了${err.toString()}'); - }, onDone: () { - Logs.debug('socketonDone'); - error(); - }); + if (!_isListening && _socket != null) { + _socket!.listen(onData, onError: (err) { + Logs.debug('socket断开了${err.toString()}'); + }, onDone: () { + Logs.debug('socketonDone'); + error(); + close(); // 关闭和重置 Socket 连接 + }); + _isListening = true; + } } } @@ -145,7 +160,7 @@ class WKConnectionManager { return; } isReconnection = true; - Logs.error('发送消息失败'); + Logs.error('发送消息失败$_isLogout'); Future.delayed(Duration(milliseconds: reconnMilliseconds), () { connect(); }); @@ -155,7 +170,9 @@ class WKConnectionManager { } _connectFail(error) { + // _socket?.close(); Logs.error('连接失败:${error.toString()}'); + print(error); Future.delayed(Duration(milliseconds: reconnMilliseconds), () { connect(); });