如何使用SignalR显示进度条

时间:2015-09-01 12:36:58

标签: asp.net-mvc signalr

当我使用AJAX时,它非常简单:

  1. 启动进度条(如提交按钮进度条)
  2. 进行AJAX通话
  3. 调用成功处理程序时,使用您从AJAX调用获得的数据更新UI并停止进度条
  4. 当我使用SignalR时,我会执行以下操作。在服务器上,我的hum方法不会返回任何内容(因此我无法更新UI并停止进度条)。相反,我为所有客户端(包括发送数据的客户端)调用一个类似ThisDataWasChanged的方法。

    我不太清楚该怎么做。我的意思是,确定我可以首先为调用hub方法的客户端返回数据,然后更新所有其他客户端(以某种方式区分它们),但这似乎有点过分。

1 个答案:

答案 0 :(得分:1)

您需要做的事情类似于您的Hub类

中的以下内容

<强>集线器

public class ProgressBarHub : Hub
{
    public void change()
    {
        // Do some stuff
        Clients.Client(Context.ConnectionId).thisDataWasChanged(progressBarObj);   
    }
}

<强> JS

// Create hub
var hub = $.connection.progressBarHub;

// Connect
$.connection.hub.start().done(function () {
    // Start progress bar?
    // Create a start progress bar method in the hub and call it
    });


hub.client.thisDataWasChanged = function (progressBarObj) {
    //Do something to the progress bar with the progressBarObj that we returned 
};