From 75a27b6078bcf2315416461dd0f398245ffa8de2 Mon Sep 17 00:00:00 2001 From: mel-mouk Date: Wed, 15 Mar 2023 08:01:01 +0100 Subject: [PATCH 1/4] Conditional import to use dart:html on web platform --- lib/src/ddp_client.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/ddp_client.dart b/lib/src/ddp_client.dart index 969a122..ae55c34 100644 --- a/lib/src/ddp_client.dart +++ b/lib/src/ddp_client.dart @@ -1,5 +1,5 @@ import 'dart:convert'; -import 'dart:io'; +import 'dart:io' if (dart.library.html) 'dart:html'; import 'dart:async'; import 'dart:math'; From 28380e60893fa06743c052a3d1dbb7c3d8815a0e Mon Sep 17 00:00:00 2001 From: mel-mouk Date: Wed, 15 Mar 2023 14:21:37 +0100 Subject: [PATCH 2/4] Install web_socket_channel for test instead of new custom implementation --- lib/src/ddp_client.dart | 3 ++- pubspec.yaml | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/src/ddp_client.dart b/lib/src/ddp_client.dart index ae55c34..cf36183 100644 --- a/lib/src/ddp_client.dart +++ b/lib/src/ddp_client.dart @@ -1,5 +1,6 @@ import 'dart:convert'; -import 'dart:io' if (dart.library.html) 'dart:html'; +import 'package:web_socket_channel/web_socket_channel.dart'; +import 'dart:io'; import 'dart:async'; import 'dart:math'; diff --git a/pubspec.yaml b/pubspec.yaml index 3c47757..c184bfe 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -9,6 +9,7 @@ environment: dependencies: crypto: ^3.0.1 rxdart: ^0.27.0 + web_socket_channel: ^2.3.0 dev_dependencies: pedantic: ^1.11.0 From 8fbcb78d353001f17b440ff624da6dae7024c315 Mon Sep 17 00:00:00 2001 From: mel-mouk Date: Wed, 15 Mar 2023 14:54:40 +0100 Subject: [PATCH 3/4] Use WebSocketChannel instead of WebSocket --- lib/src/ddp_client.dart | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/lib/src/ddp_client.dart b/lib/src/ddp_client.dart index cf36183..d603b1f 100644 --- a/lib/src/ddp_client.dart +++ b/lib/src/ddp_client.dart @@ -1,6 +1,5 @@ import 'dart:convert'; import 'package:web_socket_channel/web_socket_channel.dart'; -import 'dart:io'; import 'dart:async'; import 'dart:math'; @@ -90,7 +89,7 @@ class DdpClient { late DdpConnectionStatus _connectionStatus; String url; String userAgent; - WebSocket? _socket; + WebSocketChannel? _socket; int maxRetryCount; final Map _onReconnectCallbacks = {}; String? serverId; @@ -199,7 +198,7 @@ class DdpClient { printDebug('Begin of disconnect()'); _isTryToReconnect = false; if (_socket != null) { - _socket!.close().then((value) { + _socket!.sink.close().then((value) { _socket = null; }).catchError((err) { printDebug(err); @@ -233,13 +232,10 @@ class DdpClient { _connectionStatus.reason = null; _statusStreamController.sink.add(_connectionStatus); try { - WebSocket.userAgent = userAgent; - _socket = await WebSocket.connect(url).timeout( - Duration(seconds: 5), - ); + _socket = WebSocketChannel.connect(Uri.parse(url));//, headers: { 'User-Agent': userAgent }); _connectionStatus.retryCount = 0; _connectionStatus.retryTime = Duration(seconds: 1); - _socket!.listen( + _socket!.stream.listen( _onData, onDone: _onDone, onError: _onError, @@ -305,7 +301,7 @@ class DdpClient { } var msg = json.encode(data); printDebug('Send: $msg'); - _socket!.add(msg); + _socket!.sink.add(msg); // Resend all subscriptions _subscriptionHandlers.forEach((id, handler) { @@ -318,7 +314,7 @@ class DdpClient { if (_socket != null) { var msg = json.encode({'msg': 'ping'}); printDebug('Send: $msg'); - _socket!.add(msg); + _socket!.sink.add(msg); var sentTime = DateTime.now(); _flagToBeResetAtPongMsg = true; Future.delayed(Duration(seconds: PONG_WITHIN_SEC), () { @@ -340,7 +336,7 @@ class DdpClient { if (_socket != null) { var msg = json.encode({'msg': 'pong'}); printDebug('Send: $msg'); - _socket!.add(msg); + _socket!.sink.add(msg); } } @@ -354,7 +350,7 @@ class DdpClient { }; var msg = json.encode(data); printDebug('Send: $msg'); - _socket!.add(msg); + _socket!.sink.add(msg); } } @@ -366,7 +362,7 @@ class DdpClient { }; var msg = json.encode(data); printDebug('Send: $msg'); - _socket!.add(msg); + _socket!.sink.add(msg); } } @@ -384,7 +380,7 @@ class DdpClient { } var msg = json.encode(data); printDebug('Send: $msg'); - _socket!.add(msg); + _socket!.sink.add(msg); } } From ea6b0a241ee227fead0cce8a39333a5347ca7311 Mon Sep 17 00:00:00 2001 From: mel-mouk Date: Wed, 15 Mar 2023 14:56:07 +0100 Subject: [PATCH 4/4] Remove useless comment --- lib/src/ddp_client.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/ddp_client.dart b/lib/src/ddp_client.dart index d603b1f..0a5558a 100644 --- a/lib/src/ddp_client.dart +++ b/lib/src/ddp_client.dart @@ -232,7 +232,7 @@ class DdpClient { _connectionStatus.reason = null; _statusStreamController.sink.add(_connectionStatus); try { - _socket = WebSocketChannel.connect(Uri.parse(url));//, headers: { 'User-Agent': userAgent }); + _socket = WebSocketChannel.connect(Uri.parse(url)); _connectionStatus.retryCount = 0; _connectionStatus.retryTime = Duration(seconds: 1); _socket!.stream.listen(