C# 如何在ASP.NETMVC3网站中添加comet实现?

C# 如何在ASP.NETMVC3网站中添加comet实现?,c#,comet,asp.net-mvc-3,C#,Comet,Asp.net Mvc 3,我正在尝试使我的网站具有与此类似的功能: [删除] 基本上,计数器会下降,每次有人出价时,计数器会重置为15秒 我想我需要使用类似comet的实现,不是吗?我的判断正确吗 我不认为该页面上的每一次拍卖都在不断地ping服务器以获取更新,而是服务器在传递消息嘿,有人在这里出价!访问该网站 事情是这样的,我从来没有在网站上做过类似comet的行为,根据这个非常过时的说法,在ASP.Net中很难做到 我需要comet还是有更好的替代方案?我过去所做的是在MVC中使用异步操作获得相同的结果 基本上,您需

我正在尝试使我的网站具有与此类似的功能:

[删除]

基本上,计数器会下降,每次有人出价时,计数器会重置为15秒

我想我需要使用类似comet的实现,不是吗?我的判断正确吗

我不认为该页面上的每一次拍卖都在不断地ping服务器以获取更新,而是服务器在传递消息嘿,有人在这里出价!访问该网站

事情是这样的,我从来没有在网站上做过类似comet的行为,根据这个非常过时的说法,在ASP.Net中很难做到


我需要comet还是有更好的替代方案?

我过去所做的是在MVC中使用异步操作获得相同的结果

基本上,您需要的是一个异步MVC控制器,它保存请求直到服务器中发生更改

您的客户机将向服务器发送一个ajax请求,该请求将在异步操作中等待,直到服务器中发生更改,然后返回到客户机,客户机处理该请求,并向服务器发送另一个请求,等待更多更改。这将为您提供所需的即时反馈

我实现了一些类似的东西,但没有使用Asycn控制器,因为这个应用程序不会有很多并发用户。但是想法是一样的,如果需要为许多用户扩展,您只需将其转换为异步

    [HttpGet]
    public JsonResult Comet(string message)
    {
        MiniProfiler.Stop(true);

        var currentMessage = GetCurrentMessage();

        while (message == currentMessage)
        {
            Thread.Sleep(250);
            currentMessage = GetCurrentMessage();
        }

        return Json(currentMessage, JsonRequestBehavior.AllowGet);
    }
MVC控制器 客户端
它根本不用comet。正如您在firebug中看到的,它一直在执行ajax请求并接收JSON以更新数据

我最近用comet做了一些测试和研究,我需要它在一个即将到来的项目中,我发现Frozenmounting和PokeIn的Websync是目前为止最好的选择。编写自己的实现只需要2个困难和2个耗时。你可以有一个运行良好的一个只是一个小的价格

2012年2月19日编辑

有一种新的选择

演示如何将实时股票计数器添加到ASP.NET MVC 3应用程序。这听起来与您正在寻找的功能非常相似,因此可能非常有用


解决方案/博客文章使用了Pusher,这是一个我为之工作的托管服务,因此您根本不需要担心实时基础设施。它还使用WebSocket,最终将取代轮询或任何其他类型的实时机制,如http长轮询或http流。您如何判断他们没有使用comet?正如我所说,当您打开Firebug时,您可以看到他们正在发出ajax GET请求,并使用新的值返回JSON。只要打开Firebug和控制台,当你打开网站。哇,不知道Firebug让你看到了!谢谢