3

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

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

客户:

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

服务器:

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


Fiddler-屏幕截图 Fiddler-屏幕截图

更高的分辨率



日志(客户端、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 秒(现在大约每分钟)发生一次。但也没有使用配置值(心跳等)。

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

4

2 回答 2

2

这是我的错。

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

于 2013-01-28T11:52:27.733 回答
1

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

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

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

代替

conn.Start().Wait();
于 2013-06-11T09:01:04.013 回答