如何使用.NET在MVC3中实现服务器发送事件?

发布于 2024-12-02 23:59:03 字数 149 浏览 1 评论 0 原文

我想在 MVC .NET 中使用 SSE 制作一个 feed 应用程序。我正在浏览网络,但找不到在 MVC 中实现 SSE 的示例或方法。我开发了一个非常肮脏的解决方案,其中一个视图调用一个控制器,该控制器调用第二个视图,而第二个视图将推送到第一个视图。我希望有人可以提供帮助。谢谢。

I want to make a feed application using SSE in MVC .NET. I was looking over the web but I can't find an example or a way to implement the SSE in MVC. I developed a very dirty solution where a View calls a Controller that calls a second View, and this 2nd View makes the push to the first one. I hope that somebody can help. Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

奈何桥上唱咆哮 2024-12-09 23:59:03

看看 SignalR。它的设置和运行非常容易,并且 ASP.NET 中有大量示例可以帮助您入门。

Take a look at SignalR. It is very easy to set up and get running, and there are plenty of examples in ASP.NET to get you started.

回首观望 2024-12-09 23:59:03

如果 ASP.NET WebApi 是一个选项,您可以查看我的库 ServerSentEvents4Net。该代码位于 Github 上,也可在 Nuget

If ASP.NET WebApi is an option you can checkout my library, ServerSentEvents4Net. The code is up on Github, and its also available on Nuget.

落墨 2024-12-09 23:59:03

以下是在 的示例"/questions/tagged/mvc4" class="post-tag" title="显示标记为'mvc4'的问题" rel="tag">mvc4 使用 (它也应该适用于 MVC3
控制器部分:

 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 src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
        <script type="text/javascript">

            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>

输出:

在此处输入图像描述

Here's an example to implement in using (it should work fine for MVC3 also)
Controller part:

 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");

        }

View Part:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
        <script type="text/javascript">

            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>

Output:

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文