10

我正在将 SignalR (0.5.3) Hubs 用于聊天应用程序,其中每个击键都发送到服务器(保存在数据库中),中继到所有客户端,并从服务器。

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

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

4

1 回答 1

5

有两种选择。

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

或者

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

希望这可以帮助!

于 2012-10-04T16:28:42.380 回答