我将使用完整的asp.net SignalR 2.3.0.0客户端和服务器,而不是.net核心信号器版本来开头这个问题。
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。一旦连接断开,据我了解,服务器端方法所做的任何事情都可能仍会正常继续...但是 客户对此一无所知。.在这种情况下,通常如何工作? (即通知客户端服务器端方法结果吗?)
答案 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,因为我假设您只想将错误返回给请求者。与您的结果相同,有一种可以返回到调用方的调用方法。