我试图弄清楚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客户端是否忙碌"处理请求或只是空闲。有什么想法吗?
答案 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;
});
}
这不是最佳解决方案,但可能会给你一些方法。谢谢。