我的客户端每两秒重新连接一次SignalR集线器。我想通过设计或我的错误来了解这些。
客户端:
var connection = new HubConnection("http://xyz.cloudapp.net/push");
connection.Start().Wait();
服务器:
var listenUrl = "http://xyz.cloudapp.net/push";
WebApplication.Start<Startup>(listenUrl );
的Fiddler-截图
Log(Client,StateChanged Event / 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,但似乎不是正确的。
答案 0 :(得分:2)
这是我的错。
我试图用一个新的孤立项目重现“问题”。我发现我的服务器应用程序正在使用旧的和过时的SignalR库。更新到最新版本后,它完美无缺。大卫,谢谢你的帮助。
答案 1 :(得分:1)
谢谢你,我解决了我的问题!
我的SignalR winform客户端遇到了“System.Net.WebException:请求被中止:请求被取消”的异常。 解决方案是使用:
HubConnection conn = new HubConnection(myURL);
conn.Start(**new LongPollingTransport()**).Wait();
而不是
conn.Start().Wait();