SignalR客户端错误:在收到调用结果之前,连接开始重新连接

时间:2019-01-11 04:40:06

标签: signalr signalr.client signalr-2

我将使用完整的asp.net SignalR 2.3.0.0客户端和服务器,而不是.net核心信号器版本来开头这个问题。

javascript客户端代码

 var pxyHub = $.connection.myHub; 

 $.connection.hub.start();

 pxyHub.server.myServerSideMethod(val1, val2)
    .done( (rntVal) => {
        //do stuff on success...
        })
    .fail( (err) => {
        //do stuff on error...
        })

在服务器端,我在myServerSideMethod()中放置了一个断点; 如果我花时间浏览此服务器端代码,则浏览器中的失败回调将触发,err =“在收到调用结果之前,连接已开始重新连接”

Q1。 我该如何扩展客户端的超时时间,以便JS调用在失败之前等待更长的时间(或无限期)?

Q2。一旦连接断开,据我了解,服务器端方法所做的任何事情都可能仍会正常继续...但是 客户对此一无所知。.在这种情况下,通常如何工作? (即通知客户端服务器端方法结果吗?)

1 个答案:

答案 0 :(得分:0)

这就是我要做的... JS客户端:

return myHubProxy.server.getUsers();

在我的集线器中,我有:

public async Task GetUsers()
{
    try{
         //do stuff to get list of users from database
       }
    catch(Exception ex)
    {

    }
    await Clients.All.usersonline((new JavaScriptSerializer()).Serialize(userlist));
}

您可以在“捕获”中添加对JS客户端函数的调用,以调用并通知结果(如果失败)。像这样的东西:await Clients.Caller.errorMessage("There was an error processing your request.");注-我在这里使用Clients.Caller,因为我假设您只想将错误返回给请求者。与您的结果相同,有一种可以返回到调用方的调用方法。