【问题标题】:SignalR: Check if server is availableSignalR:检查服务器是否可用
【发布时间】:2016-05-19 06:55:45
【问题描述】:

我有一个 C# 服务器和一个使用 SignalR 进行通信的 C# 客户端。两者都是 WPF 应用程序。 在我的客户端上,我有一个用于在服务器上登录的按钮。如果服务器不可用,我想禁用登录按钮。

有什么方法可以检查服务器是否可用?

【问题讨论】:

  • 我不认为有一个简单的方法可以使用 SignalR 集线器来做到这一点,尽管在 SO 上有一个类似的问题概述了使用 PersistentConnection 的方法:stackoverflow.com/questions/19885207/…(这使用 jQuery但是,如果您有 C# 后端,那么可能不可行)。我看到的内在问题是,为了让客户端确定服务器是否可用,它必须尝试连接到它,如果服务器离线,这将不会发生。
  • 也看到了另一个线程,但无法将它与 C# 后端一起使用。

标签: c# server client signalr service-not-available


【解决方案1】:

我使用一个线程解决了这个问题,我试图在一个 endlees 循环中连接到服务器。如果我得到一个异常,我知道服务器不可用,几秒钟后我再试一次。当可以连接到服务器时,我正在引发事件。一年以来,它就像一个魅力。

【讨论】:

    【解决方案2】:

    您可以覆盖集线器的 OnConnected 方法并让它调用客户端上启用按钮的方法,然后覆盖 OnDisconnected 并让它调用禁用按钮的方法。虽然这本身并不是“检查服务器是否在线”,但这意味着您只有在客户端成功连接到集线器时才能登录。

    【讨论】:

    • 也考虑过这一点,但我只想在用户单击按钮时连接到服务器。也许我必须更改它并自动连接并为用户单击添加登录方法。
    • 如果你想走那条路,你可以做的是将集线器连接代码放入按钮的单击方法中,但是你仍然没有办法确保服务器是在尝试连接之前可用。抱歉,我无法提供比这更多的帮助了。
    • 你帮了很大的忙,因为我有一个想法,如果没有你的提示,我不会有这个想法;)就像我在上一条评论中所写的那样。我将在启动时连接到服务器,并为服务器提供一个登录方法,当用户按下按钮时客户端将“登录”。如果服务器不可用,我会看到这个:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多