Deprecate onConnect (#36)
* Replace onOpen with onConnect
* buffer messages
* actually buffer
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 80694bb..a03a6c6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 3.7.0
+
+- Deprecate the client's `onOpen` getter. Messages will now be buffered until
+ a connection is established.
+
## 3.6.1
- Drop dependency on `package:uuid`.
diff --git a/lib/client/sse_client.dart b/lib/client/sse_client.dart
index 11327fd..4686fa0 100644
--- a/lib/client/sse_client.dart
+++ b/lib/client/sse_client.dart
@@ -37,10 +37,11 @@
_eventSource =
EventSource('$serverUrl?sseClientId=$clientId', withCredentials: true);
_serverUrl = '$serverUrl?sseClientId=$clientId';
- _outgoingController.stream
- .listen(_onOutgoingMessage, onDone: _onOutgoingDone);
+ _eventSource.onOpen.first.whenComplete(() => _outgoingController.stream
+ .listen(_onOutgoingMessage, onDone: _onOutgoingDone));
_eventSource.addEventListener('message', _onIncomingMessage);
_eventSource.addEventListener('control', _onIncomingControlMessage);
+
_eventSource.onOpen.listen((_) {
_errorTimer?.cancel();
});
@@ -56,6 +57,9 @@
});
}
+ @Deprecated(
+ 'Outgoing messages are now buffered until a connection is established.'
+ 'This should no longer be required and will be removed.')
Stream<Event> get onOpen => _eventSource.onOpen;
/// Add messages to this [StreamSink] to send them to the server.
diff --git a/pubspec.yaml b/pubspec.yaml
index 63c362d..b2b8b3f 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
name: sse
-version: 3.6.1
+version: 3.7.0
homepage: https://github.com/dart-lang/sse
description: >-
Provides client and server functionality for setting up bi-directional