stream method Null safety
Allows to stream SSE events from horizon. Certain endpoints in Horizon can be called in streaming mode using Server-Sent Events. This mode will keep the connection to horizon open and horizon will continue to return responses as ledgers close. See: Streaming
Implementation
Stream<OrderBookResponse> stream() {
StreamController<OrderBookResponse> listener = StreamController.broadcast();
bool cancelled = false;
listener.onCancel = () {
cancelled = true;
};
void createNewEventSource() {
if (cancelled) {
return;
}
EventSource.connect(this.buildUri()).then((eventSource) {
eventSource.listen((Event event) {
if (cancelled) {
return null;
}
if (event.data == "\"hello\"") {
return null;
}
if (event.event == "close") {
createNewEventSource();
return null;
}
OrderBookResponse orderBookResponse =
OrderBookResponse.fromJson(json.decode(event.data!));
listener.add(orderBookResponse);
});
});
}
createNewEventSource();
return listener.stream;
}