我的客户端每两秒重新连接到 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-屏幕截图
日志(客户端、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 ,但这似乎不是正确的。