ASP.NET MVC - 使用Web Service进行实时更新

时间:2012-07-29 22:05:14

标签: asp.net asp.net-mvc web-services

我正在尝试查找如何使用ASP.NET MVC中的Web服务获取实时更新的示例(版本无关紧要)并将其发布回特定用户的浏览器窗口。

一个完美的例子就是一种类似于facebooks的聊天系统,只要发布了一条消息,就会将响应发送到相应的浏览器(客户端),而不是在每次检查新消息的页面上创建一个javascript计时器5秒。我已经听过很多次关于同步程序的类型,但我在代码中寻找这个,而不是使用第三方软件。

我想具体做什么:

我正在尝试创建一个基于ASP.NET MVC的SQL和Web Service的Web浏览器聊天客户端。当您有2-4个不同的用户名登录到系统时,他们聊天并相互发送保存在SQL数据库中的消息,然后当有新条目(或有人发送新消息)时,Web服务会看到此更改然后向接收用户显示新更新的消息。 E.G Full Chat使用Web服务同步聊天。

一般来说真正困扰我的是我不知道如何检测是否有新的东西添加到SQL表中,而且我也不知道如何将信息从SQL发送到特定用户的Web浏览器。因此,如果网站上有人userA,userB,userC all,我不知道如果只是用户名“guest”,如何只向userC显示消息。我很想知道这个功能不仅适用于我现在想要创建的内容,还适用于未来的项目。

有人能指出我正确的方向吗?我非常了解SQL,而且我是中间的Web服务。

1 个答案:

答案 0 :(得分:2)

您可以使用SignalR执行此任务。

Via Scott Hanselman:

  1. 创建Asp.net mvc空应用程序

  2. 安装SignalR的nuget包

  3. 添加新的Controller(例如HomeController):

    public class HomeController:Controller {     公共ActionResult索引()     {         return View();     } }

  4. 使用javascript引用创建视图索引: @ Url.Content( “〜/脚本/ jQuery的1.6.4.min.js”)” “@ Url.Content(” 〜/脚本/ jquery.signalR.js “)” 和功能:

    $(function () {
        var hub = $.connection.chatHub;
        hub.AddMessage = function (msg) {
            $('#messages').append('<li>' + msg + '</li>');
        };
        $.connection.hub.start().done(function() {
            $('#send').click(function() {
                hub.send($('#msg').val());
            });
        });
    });    
    
  5. 创建类ChatHub:

    公共类ChatHub:Hub {     public void Send(string message)     {         Clients.AddMessage(消息);     } }