2012-10-05 86 views
1

如何检测客户端何时无法连接(或重新连接)到Signalr集线器?SignalR - 如何检测客户端连接/重新连接失败(例如超时)

是否有在js客户端上触发的事件?

+0

道歉,看起来像一个重复... http://stackoverflow.com/问题/ 10726453/signalr-connect-disconnect-hub-blow-up – Will

+0

看起来我很快就对自己的问题发表了评论 - 在上面的链接中实现了这个解决方案,当我停止信号服务器时,它不会触发事件我期望得到的观点......关于听最好的事件的想法? – Will

回答

3

回应你的第二个评论:

目前在0.5.3当服务器消失SignalR不处理的情况。但是,这将在下一版1.0alpha中处理。

对于临时我建议每5秒钟ping服务器,看看请求失败。如果它失败了2次,那么服务器可能关闭,你可以从那里处理逻辑。

如果你想看到我们是如何做到这一点在这里的下一个版本的链接GitHub的功能:https://github.com/SignalR/SignalR/issues/469

+0

谢谢。读过新的实现后,D Fowler写了以下内容......在客户端,我们需要弄清楚最好的事件是什么以及是否将keepAliveTimeout与重新连接分开。作为一名开发人员,您是想为每种逻辑编写单独的逻辑,还是只关心网络连接“消失”?开发者需要为他们的应用做出决定需要多少细节。 如果我们确保事件分开,那么我认为我们需要在连接上有一个更高级别的事件,这意味着“网络关闭”。也许重新连接工作也是如此。 – Will

+0

如果我们在负载均衡器后面有多个signalr盒 - 如果signalr响应告诉客户端它不知道他们是谁,那么它们将非常方便,因此他们可以再次触发正确的连接并订阅其丢失的组;这是否有意义?目前,如果客户端遇到不存在的服务器,他们不知道服务器不知道他们希望从哪些组发送消息。 – Will

+0

就客户而言,它只想知道它是断开连接还是重新连接等。但是,在服务器不知道客户是谁的情况下(并且客户声称服务器应该知道),服务器会向客户端抽出一条断开连接命令,以强制它完成开始(协商等)。在这种情况下,开发人员可以编写逻辑来重新加入X个组。另外,请记住,在下一个版本中,我们不允许自动重新加入组(安全问题)。因此,维护客户端 –