服务器发送的事件如何与ASP.NET MVC一起使用?

我有一个ASP.NET MVC应用程序,我正在使用服务器发送的事件。 应用程序工作正常,但我对它的工作原理有一些疑问。 以下是控制器代码。

public class HomeController : Controller { // // GET: /Home/ public ActionResult Index() { ViewBag.Message = "SSE WITH ASP.NET MVC"; return View(); } public ActionResult Message() { var result = string.Empty; var sb = new StringBuilder(); sb.AppendFormat("data: {0}\n\n", DateTime.Now.ToString()); return Content(sb.ToString(), "text/event-stream"); } } 

以下是视图代码。

  function contentLoaded() { var source = new EventSource('home/message'); //var ul = $("#messages"); source.onmessage = function (e) { var li = document.createElement("li"); var returnedItem = e.data; li.textContent = returnedItem; $("#messages").append(li); } }; window.addEventListener("DOMContentLoaded", contentLoaded, false);  

@ViewBag.Message

SSE WITH ASP.NET MVC

我的问题是:1。时间每3秒更新一次。 为什么会这样? 2.如何确定调用控制器操作的频率?

时间每3秒更新一次。 为什么会这样?

因为Controller返回包含单个数据的ActionResult然后关闭连接,所以浏览器等待3秒钟然后重新打开它。

如何确定调用控制器操作的频率?

您可以通过循环和延迟来确定调用任何其他方法的频率。

SSE是服务器发送事件,您从服务器端管理所有这些内容,只有在您明确保持连接打开时它才能正常工作,否则您也可以从客户端进行AJAX轮询。