【问题标题】:SignalR client reconnects every two seconds to hubSignalR 客户端每两秒重新连接到集线器
【发布时间】:2013-01-27 15:32:54
【问题描述】:

我的客户端每两秒重新连接到 SignalR 集线器。我想知道这是我设计的还是我的错误。

  • SignalR 版本:1.0.0-rc2
  • 在 Windows Azure 自托管/无 iis(也没有 servicebus 等)中托管 SignalR Hub
  • 在 localhost 上的行为相同
  • 我已将心跳间隔设置为 1 分钟,没有任何变化。还尝试了保持活动/连接超时。

客户:

var connection = new HubConnection("http://xyz.cloudapp.net/push");
connection.Start().Wait();

服务器:

var listenUrl = "http://xyz.cloudapp.net/push";
WebApplication.Start<Startup>(listenUrl );


提琴手-屏幕截图

Higher Resolution



日志(客户端、StateChanged 事件/HubConnection):

16:20:48 State Changed: Disconnected -> Connecting
16:20:52 State Changed: Connecting -> Connected
16:20:53 State Changed: Connected -> Reconnecting
16:20:53 State Changed: Reconnecting -> Connected
16:20:55 State Changed: Connected -> Reconnecting
16:20:55 State Changed: Reconnecting -> Connected
[...]



问题 1: 我该怎么做才能避免每个客户端因为重新连接而每两秒调用一次我的服务器?

问题 2: 如何获取有关重新连接“问题”的信息?有没有办法获取一些内部日志?

编辑 1: 我已将传输更改为长轮询:

connection.Start(new LongPollingTransport()).Wait();

我发现默认情况下使用长轮询和服务器发送事件。 当我只使用长轮询作为传输时,重新连接不会每 2 秒(现在大约每分钟)发生一次。但也没有使用配置值(心跳等)。

问题 3 如何设置长轮询传输的重新连接时间?我找到了一个 ReconnectDelay 属性,但它似乎不是正确的。

【问题讨论】:

  • 看起来有 2 个传输正在争夺连接。您是否有一个可以重现该问题的独立项目?
  • 不,还没有。但我会尝试以较小的规模重现它。
  • @dfowler 已解决。请参阅下面的答案。谢谢。

标签: c# wcf azure signalr


【解决方案1】:

这是我的错。

我试图用一个新的孤立项目重现“问题”。我发现我的服务器应用程序正在使用旧的和过时的 SignalR 库。更新到最新版本后,它可以完美运行。大卫,谢谢你的帮助。

【讨论】:

    【解决方案2】:

    感谢你,我解决了我的问题!

    我在 SignalR winform 客户端中遇到“System.Net.WebException:请求被中止:请求被取消”异常。 解决方案是使用:

    HubConnection conn = new HubConnection(myURL);
    conn.Start(**new LongPollingTransport()**).Wait();
    

    而不是

    conn.Start().Wait();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-08
      • 2019-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多