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

问题描述 投票:4回答:1

我有一个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>

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

c# asp.net-mvc html5
1个回答
10
投票

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

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

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

使用相同的方法,可以确定使用循环和delays来调用其他任何方法的频率。

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


0
投票

对于ASP.net MVC中的服务器发送事件,请参考https://github.com/aswinjose89/SSE.git

© www.soinside.com 2019 - 2024. All rights reserved.