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。一旦连接断开,我的理解是无论服务器端方法正在做什么都可能会继续正常进行......但客户端不会知道它......通常如何解决这种情况?(即通知客户端服务器端方法结果?)

4

1 回答 1

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));
}

您可以在“catch”中添加对 JS 客户端函数的调用,以在失败时调用并通知结果。类似于:await Clients.Caller.errorMessage("There was an error processing your request.");注意 - 我在这里使用 Clients.Caller,因为我假设您只想将错误返回给请求者。您的结果也一样,有一个调用方法可以返回给调用者。

于 2019-01-11T15:36:04.767 回答