服务器发送的事件如何与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轮询。