【发布时间】:2017-06-30 17:25:06
【问题描述】:
对于一个项目,我需要在 C# 应用程序中实现 SSE (Server Sent Events)。虽然这听起来很容易,但我不知道如何解决这个问题。
由于我是 C# 新手(尽管对一般编程并不陌生),所以我去 Google 游览并试图寻找一些示例代码。根据我目前所见,我可以学习使用 C# 或 consume 服务器发送事件构建 HTTP 服务器。但是我没有发现任何关于发送 SSE 的信息。
我想弄清楚的是:我怎样才能通过传入的请求继续发送更新的数据? 通常,你收到一个请求,做你的事并回复。完成,连接关闭。但在这种情况下,每次我的应用程序中的事件触发时,我都想“坚持”到响应流并发送新数据。
对我来说,问题在于这种基于事件的方法:它不是基于间隔的轮询和更新。更确切地说,该应用程序就像“嘿,发生了一些事情。我真的应该告诉你!”
TL;DR:我怎样才能保持响应流并发送更新 - 不是基于循环或计时器,而是每次触发某些事件?
另外,在我忘记之前:我知道,那里有图书馆正在这样做。但从我目前所见(以及我所理解的;如果我错了,请纠正我)这些解决方案取决于 ASP.NET / MVC / 你的名字。由于我只是在编写一个“普通”的 C# 应用程序,我认为我不符合这些要求。
【问题讨论】:
-
不,有些库不需要 ASP.NET。只是为他们研究。即使名称中包含 ASP.NET,也可能只是因为它们由 ASP.NET 团队运行并且可能是自托管的。我也不会将自己局限于 SSE,不要忘记 web sockets 之类的技术。
-
我不怀疑。我只是说,从到目前为止我所看到的我找不到任何东西。对我来说,迄今为止的结果一直是关于 SSE clients 或 ASP.NET,如果不是的话。正如您可能想象的那样,搜索“服务器端事件服务器库”是毫无用处的。但如果你能给我一个图书馆的链接,我很乐意接受。 :)
-
出于好奇,您为什么不直接构建一个 ASP.Net 应用程序呢?它只是添加了一些额外的 DLL 依赖项......似乎是一个任意限制。
-
@TimCopenhaver 然后将自己绑定到 IIS。
-
@mason 不正确。您可以在没有 IIS 的情况下使用 ASP.Net - 它们是完全独立的东西,尤其是使用 .Net Core。
标签: c# server-sent-events