3

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

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

我正在寻找具体做什么:

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

总的来说,真正让我感到震惊的是我不知道如何检测是否有新的东西添加到 SQL 表中,而且我也不知道如何将信息从 SQL 发送到特定用户的 Web 浏览器。因此,如果网站上有用户A、用户B、用户C,我不知道如果他们都在用户名“guest”下,如何只向用户C显示一条消息。我很想知道这个功能不仅适用于我现在尝试创建的功能,而且适用于未来的项目。

谁能指出我正确的方向?我非常了解 SQL,并且我熟悉 Web 服务。

4

1 回答 1

2

您可以使用 SignalR 完成此任务。

通过斯科特汉塞尔曼:

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

  2. 安装 SignalR 的 nuget 包

  3. 添加新控制器(例如 HomeController):

    公共类 HomeController : 控制器 { public ActionResult Index() { return View(); } }

  4. 使用 javascript 引用创建视图索引:@Url.Content("~/Scripts/jquery-1.6.4.min.js")" "@Url.Content("~/Scripts/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(message); } }

于 2012-07-29T23:50:59.677 回答