如何确定SignalR客户端是否有待处理的请求?

时间:2015-02-24 20:51:56

标签: javascript signalr

我试图弄清楚SignalR客户端上是否有任何未决请求,以便我可以显示"正在加载"指示符,直到处理完所有请求。这是我目前正在做的事情:

// some variable to hold whether there are pending requests
var isProcessing = false;


function ProcessSomeData(data)
{
    isProcessing = true;

    hub.server.setUserData(data).done(function () {
        isProcessing = false;
    });
}

然后我查看isProcessing以查看是否处理了所有请求。这是不准确的(当仍有请求正在进行时,有时isProcessing被设置为false),所以我想知道是否有办法确定SignalR客户端是否忙碌"处理请求或只是空闲。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我不知道SignalR库中的任何其他解决方案,但我之前为此行为做了一些解决方法。我在从集线器发送实际数据之前发送加载消息。代码是这样的:

public void Send(string message)
{
     var username = Context.User.Identity.Name;
     context.Clients.User(username).loadingMessages();
     //-- Do you process here
     context.Clients.User(username).yourMessage(message);
}

在javascript中你应该创建loadingMessages实现:

// some variable to hold whether there are pending requests
var isProcessing = false;

$.connection.hub.client.loadingMessages = function(){
   isProcessing = true;
   //-- Some Dom manupulation may be
}

function ProcessSomeData(data)
{


    hub.server.setUserData(data).done(function () {
       isProcessing = false;
    });
}

这不是最佳解决方案,但可能会给你一些方法。谢谢。