У меня есть ASP. net серверный проект с ядром 3.1, который имеет очень простой API, отправляющий односторонние серверные отправленные события (SSE), например:
[HttpGet]
public async Task Get()
{
var response = Response;
response.Headers.Add("Content-Type", "text/event-stream");
response.Headers.Add("Cache-Control", "no-cache");
response.Headers.Add("Connection", "keep-alive");
for (var i = 0; true; ++i)
{
await response.WriteAsync($"id: unique{i}\n");
await response.WriteAsync("event: add\n");
//await response.WriteAsync("retry: 10000\n");
await response.WriteAsync($"data: Controller {i} at {DateTime.Now}\n\n");
response.Body.Flush();
await Task.Delay(5 * 1000);
}
}
Теперь я хочу получить эти события через C# UWP Client. К сожалению, я получаю только первое событие:
using (var client = new HttpClient())
{
using (var stream = await client.GetStreamAsync("http://localhost:5000/api/subscription"))
{
using (var reader = new StreamReader(stream))
{
while (true)
{
Console.WriteLine(reader.ReadLine());
}
}
}
}
Как я могу создать поведение в UWP, чтобы всегда прослушивать это соединение и получать события, которые я могу обработать дальше?