应用程序池回收的SignalR连接处理

时间:2012-10-04 10:00:26

标签: c# signalr signalr-hub

我正在使用SignalR(0.5.3)集线器作为聊天应用程序,其中每次击键都发送到服务器(保存在数据库中),中继到所有客户端并返回返回值(排序的字符串标记)从服务器返回。

它工作正常,直到应用程序池回收,然后它停止将键击中继到所有客户端(因为我猜想内存服务器状态丢失)并且服务器也不返回任何值。此时,我认为所有通过SignalR的请求都由IIS排队,然后在应用程序池被回收后进行处理。

我的问题是如何处理这种情况,以便所有客户端都知道由于应用程序池回收而导致的服务器不可用/延迟,通知用户等待一段时间,然后在重新连接时恢复操作?

1 个答案:

答案 0 :(得分:5)

有两种选择。

对于0.5.3,您可以检测客户端何时进入“重新连接”或“断开连接”并通知用户存在服务器问题。请记住,在大多数情况下,如果服务器刚刚离开,客户端实际上不会知道它已断开连接。

OR

如果您等待下一个版本(1.0alpha),我们会为您处理大部分内容。在缺少服务器时,我们将触发onConnectionSlow事件,这将导致客户端转入“重新连接”(如果它没有收到任何信息)状态,直到服务器重新联机。客户端还将知道服务器是否消失(我们正在添加此功能)以用于边缘情况,例如应用程序池回收。

希望这有帮助!