2016-02-09 5 views
0

У меня есть сервер C# и клиент C#, использующий SignalR для связи. Оба приложения WPF. На моем клиенте у меня есть кнопка для входа на сервер. Я хочу отключить кнопку входа в систему, если сервер недоступен.SignalR: Проверьте, доступен ли сервер

Есть ли способ проверить, доступен ли сервер или нет?

+0

Я не думаю, что есть простой способ сделать это с помощью концентратора SignalR, хотя есть аналогичный вопрос о SO, который описывает способ сделать это с помощью PersistentConnection: http://stackoverflow.com/questions/19885207/ is-there-a-way-to-check-if-a-signalr-server-hub-is-active-up-ready-accepting-con (это использует jQuery, хотя, вероятно, небезопасно, если у вас есть сервер C#) , Собственная проблема, которую я вижу в этом, заключается в том, что для того, чтобы клиент мог определить, доступен ли сервер, он должен попытаться подключиться к нему, что не произойдет, если сервер в любом случае отключен. –

+0

Видел другую нить, но не смог использовать ее с C# backend. –

ответ

0

Я решил проблему, используя поток, где я пытаюсь подключиться к серверу в цикле endlees. Если я получу исключение, я знаю, что сервер недоступен, и через несколько секунд я попробую его снова. Я поднимаю события, когда возможно подключение к серверу. Работает как шарм с одного года.

1

Вы можете переопределить метод OnConnected хаба и вызвать вызов метода на клиенте, который включает кнопку, а затем переопределить OnDisconnected и вызвать вызов метода, который отключает кнопку. Хотя это не «проверка сервера в сети» как таковой, это означает, что вы сможете войти в систему, только если клиент смог подключиться к концентратору.

+0

Мысль об этом, но я только хочу подключиться к серверу, если пользователи нажали кнопку. Возможно, мне нужно изменить это и автоматически подключиться и добавить Login-Method для щелчка пользователя. –

+0

Если вы хотите пойти по этому маршруту, то вы можете поместить код соединения концентратора в метод нажатия кнопки, но тогда у вас все еще нет способа убедиться, что сервер доступен, прежде чем пытаться подключиться к нему , Извините, я не мог больше помочь, чем это. –

+0

Вы были отличной помощью, потому что у меня была идея, что у меня не было бы без вашего намека;) Как я писал в последнем комментарии. Я подключусь к серверу при запуске и предоставит серверу метод входа, когда клиент «войдет в систему», когда пользователь нажал кнопку. И если сервер недоступен, я увижу это :) –

Смежные вопросы