C# 服务器发送的事件如何与ASP.NET MVC配合使用?

C# 服务器发送的事件如何与ASP.NET MVC配合使用?,c#,asp.net-mvc,html,C#,Asp.net Mvc,Html,我有一个ASP.NET MVC应用程序,我正在使用服务器发送的事件。该应用程序运行良好,但我有一些关于它如何工作的问题。 下面是控制器代码 public class HomeController : Controller { // // GET: /Home/ public ActionResult Index() { ViewBag.Message = "SSE WITH 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");

      }
    }
下面是视图代码

<script>

    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);
</script>
<h2>@ViewBag.Message</h2>
<p>
    SSE WITH ASP.NET MVC
</p>
<ul id="messages">
</ul>

函数contentLoaded(){
var source=新事件源(“主页/消息”);
//var ul=$(“#消息”);
source.onmessage=函数(e){
var li=document.createElement(“li”);
var returnedItem=e.data;
li.textContent=returnedItem;
$(“#消息”)。附加(li);
}
};
addEventListener(“DOMContentLoaded”,contentLoaded,false);
@查看包。留言

带ASP.NET MVC的SSE

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

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

因为您的
控制器
正在返回包含单个数据的
操作结果
,然后关闭连接,所以请先关闭浏览器,然后重新打开它

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

用同样的方法确定调用任何其他方法的频率,使用循环和


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

谢谢您的回答。现在我对这种联系有了更好的了解。在这种情况下,当使用SSE时,典型的控制器动作会是什么样子?你有什么例子吗?或者你能给我一个链接来解释它。OP的代码似乎是基于这篇博客文章,它完全忽略了服务器发送事件的要点。