My server constantly streaming data and I want to read it on C# app. I found that I can use RestRequest.ResponseWriter
but it's only called once when the server done streaming. How do I get data as it's coming in? Do I need to use DownloadDataAsync
method or something else? Or, maybe RestSharp
cannot do this and I need to switch to HttpClient
?
var restClient = new RestClient("http://127.0.0.1:8000/my_api");
var request = new RestRequest("get_data");
request.ResponseWriter = (responseStream) =>
{
var reader = new StreamReader(responseStream, Encoding.UTF8);
var res = reader.Read();
Console.WriteLine(res);
return responseStream;
};
await restClient.DownloadDataAsync(request);
I was able to get data from the stream with RestSharp
, while it's being streamed from the server, as shown below:
var restClient = new RestClient("http://127.0.0.1:8000/my_api");
var request = new RestRequest("get_data");
var stream = await restClient.DownloadStreamAsync(request);
using var reader = new StreamReader(stream, Encoding.UTF8);
while (true)
{
var res = await reader.ReadLineAsync();
// Process response
...
}