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

问题描述:

我想弄清楚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客户端是忙于处理请求还是闲置。有任何想法吗?

我不知道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; 
    }); 
} 

这不是一个最好的解决方案,但可能会给你一些approach.Thanks。