【问题标题】:Silverlight SignalR Client takes longer to stop Connection on Self Hosted SignalRSilverlight SignalR 客户端需要更长的时间来停止自托管 SignalR 上的连接
【发布时间】:2015-09-23 10:32:25
【问题描述】:

我使用 SignalR 自托管服务 (V 2.2.0) 作为服务器并使用 Silverlight 作为 SignalR 客户端。

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

我想要的是,当我单击此按钮时,该客户端的连接应该与 SignalR Hub 断开连接。我可以从 SignalR Hub 断开连接,但需要很长时间才能响应,并且我的客户端(Silverlight Web 应用程序)进入无响应状态并在大约 28-30 秒后返回。有什么方法可以在点击按钮后立即断开客户端?

【问题讨论】:

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


【解决方案1】:

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

TL;DR;

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-16
      • 1970-01-01
      相关资源
      最近更新 更多