如何查明SignalR客户端上是否有挂起的请求

How to find out if there is a request pending on SignalR client?

本文关键字:挂起 请求 是否 何查明 SignalR 客户端      更新时间:2024-05-22

我正试图弄清楚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;
    });
}

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