如何确定在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。