Răsfoiți Sursa

diable inner 5s's retention for listener's close

melon 2 ani în urmă
părinte
comite
ce458191ee
1 a modificat fișierele cu 5 adăugiri și 3 ștergeri
  1. 5 3
      lib/listener/listener.dart

+ 5 - 3
lib/listener/listener.dart

@@ -50,6 +50,8 @@ class JsonRpcNotificationListener {
     _channel = WebSocketChannel.connect(Uri.parse(_buildConnectUrl()));
     _channel!.stream.listen(
       (data) {
+        if (!running) return; // diable inner 5s's retention.
+
         final message = _parseMessageData(data);
         if (message != null) {
           _handleNotification(message);
@@ -89,10 +91,10 @@ class JsonRpcNotificationListener {
   }
 
   /// Close and dispose connection/other resources.
-  void close() {
+  Future<void> close() async {
     if (_channel != null) {
-      if (_channel!.closeCode != null) {
-        _channel!.sink.close(wsStatus.normalClosure);
+      if (_channel!.closeCode == null) {
+        await _channel!.sink.close(wsStatus.normalClosure);
       }
       _channel = null;
     }