File tree Expand file tree Collapse file tree 1 file changed +15
-5
lines changed Expand file tree Collapse file tree 1 file changed +15
-5
lines changed Original file line number Diff line number Diff line change @@ -40,6 +40,7 @@ class SseClient extends StreamChannelMixin<String> {
40
40
_eventSource.addEventListener ('message' , _onIncomingMessage);
41
41
_eventSource.addEventListener ('control' , _onIncomingControlMessage);
42
42
_eventSource.onError.listen (_incomingController.addError);
43
+ _startPostingMessages ();
43
44
}
44
45
45
46
Stream <Event > get onOpen => _eventSource.onOpen;
@@ -83,12 +84,21 @@ class SseClient extends StreamChannelMixin<String> {
83
84
close ();
84
85
}
85
86
87
+ final _messages = StreamController <dynamic >();
88
+
86
89
void _onOutgoingMessage (dynamic message) async {
87
- var encoded = jsonEncode (message);
88
- try {
89
- await _client.post (_serverUrl, body: encoded);
90
- } catch (e) {
91
- _logger.warning ('Unable to encode outgoing message: $e ' );
90
+ _messages.add (message);
91
+ }
92
+
93
+ void _startPostingMessages () async {
94
+ await for (var message in _messages.stream) {
95
+ try {
96
+ await _client.post (_serverUrl, body: jsonEncode (message));
97
+ } on JsonUnsupportedObjectError catch (e) {
98
+ _logger.warning ('Unable to encode outgoing message: $e ' );
99
+ } on ArgumentError catch (e) {
100
+ _logger.warning ('Invalid argument: $e ' );
101
+ }
92
102
}
93
103
}
94
104
}
You can’t perform that action at this time.
0 commit comments