【发布时间】:2020-04-11 14:00:45
【问题描述】:
我有一个 ASP.net core 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 客户端接收这些事件。不幸的是,我只收到了第一个事件:
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 中创建行为,以便始终侦听该连接并接收我可以进一步处理的事件?
【问题讨论】:
标签: c# uwp server-sent-events