Silverlight SignalR Client需要更长时间才能停止自托管SignalR上的连接

时间:2015-07-06 10:11:26

标签: silverlight signalr signalr-hub self-hosting signalr.client

我使用SignalR Self Hosted Service(V 2.2.0)作为服务器并使用Silverlight作为SignalR Client。

我能够连接到服务器并能够交换消息。我有一个按钮来停止与SignalR服务的连接。

我想要的是,当我点击此按钮时,该客户端的连接应该与SignalR Hub断开连接。我能够与SignalR Hub断开连接但是它需要花费很多时间来响应并且我的客户端(Silverlight Web应用程序)进入无响应状态并在大约28-30秒后返回。单击按钮后,有没有办法立即断开客户端?

2 个答案:

答案 0 :(得分:1)

这是因为僵局。 SignalR客户端在发送中止请求时阻塞线程。但是,Silverlight希望在UI线程上发送请求。停止连接的默认超时为30秒,因此在超时后线程被解除阻塞并继续执行。这可以通过异步调用stop(await Task.Factory.StartNew(() => hubConnection.Stop());)或使超时更小来解决。

TL; DR;

https://github.com/SignalR/SignalR/issues/3102

答案 1 :(得分:0)

我通过在Silverlight线程任务中调用hub disconnect方法解决了我的问题。所以现在我不担心确认集线器与SignalR断开连接。