sendStreamedRequest method
Sends the request and transforms ByteStream to
Map<String, dynamic> for every event.
To connect to a data stream, package use BaseRequest's send(),
which returns a StreamedResponse.
Instead of waiting for the entire response, you can access
streamedResponse.stream to receive data as it arrives.
This stream provides raw bytes (ByteData), which should be decoded
and parsed into usable events.
Implementation
Future<Stream<Map<String, dynamic>>> sendStreamedRequest({
Client? client,
Encoding? encoding,
}) async {
Encoding getEncoding() {
if (encoding != null) return encoding;
if (this case Request request) {
return request.encoding;
}
return utf8;
}
try {
final streamedResponse =
await (client != null ? client.send(this) : send());
final transformedResponseStream = streamedResponse.stream
.transform(getEncoding().decoder)
.transform(sseStreamSplitter)
.transform(sseStreamParser);
return transformedResponseStream;
} catch (e) {
rethrow;
}
}