我正在使用SignalR在非常具体的网络条件下(一个疯狂的代理)。所以套接字根本不起作用,我必须使用长轮询。当我刷新页面时,它似乎工作了一段时间,但第一次Disconnect发生了。我正在尝试自动重新连接断开连接的事件和以下模式:
这种行为似乎很奇怪。我能做些什么来改善它吗?
答案 0 :(得分:2)
假设Understanding and Handling Connection Lifetime Events in SignalR中提供的提示,您可以根据网络问题采用良好的解决方案来处理连接生命周期。此外,在SignalR的问题中,我找到了适用于长轮询的以下解决方案。
您可以在KeepAlive
上设置ConfigurationManager
属性,SignalR将在指定的时间间隔内发送一个空的数据帧(基于传输)以保持连接处于活动状态(查看{{3 }})。目前的超时机制使得流媒体协议没有区别。
答案 1 :(得分:2)
使用ConnectionStatusStream。当客户端SignalR集线器代理事件被引发时,此流OnNexts。所以我们看到像连接,连接,ConnectionSlow,重新连接,重新连接,关闭,未初始化的东西。所有这些都作为SignalR集线器代理上的事件开始,并使用众多RX工厂中的一个转入IObservable流。在这种情况下IObservable.FromEvent。
无论如何,这里是我们用来在应用程序底部状态栏中显示信息的整体ConnectivityStatusViewModel。
参考: