2014-01-19 3 views
0

Я использую singalr библиотеку для разработки уведомления веб-сайта в режиме реального времени с использованием MVC 4.OnDisconnected метод singalr

Мой веб-приложение будет работать на нескольких веб-серверах, так что мне нужно управлять подключениями с помощью дб.

Все идет хорошо, кроме того, что метод OnDisconnected не работает во всех браузерах.

Кажется, что отлично работает с firefox, но с использованием IE9 и всех мобильных браузеров он не работает.

Итак, вот мой вопрос, я не буду полагаться на этот метод и заканчиваю с множеством неиспользуемых соединений в моем db. Кроме того, даже если метод Ondisconnected будет работать, есть вероятность, что сервер опустится, и это неиспользуемое соединение останется в db.

Я думал о методе фона, который будет запускаться каждые 1 минуту, скажем так, и сравните соединения db с текущими соединениями.

Проблема в том, что я не знаю, как реализовать это, или это лучший способ сделать это. Есть ли способ получить все правильное соединение, чтобы сравнить с db?

Заранее спасибо

+0

Можете ли вы задать вопрос о github с образцом проекта и инструкциями, показывая, что он не срабатывает. Он должен всегда срабатывать. – davidfowl

+0

https://github.com/nir-z/HaifanetMobile. Вы можете найти класс концентратора в каталоге Hub, а клиентский скрипт находится в разделе Views-> Shared -> _ Layout –

ответ

4

OnDisconnected метод должен всегда срабатывала для каждого браузера. Однако , когдаOnDisconnected способ пожаров может отличаться.

Вот это процесс, который SignalR проходит при запуская OnDisconnected метод:

SignalR связывается с разгрузочным событием браузера и пытается отправить запрос AJAX на сервер, чтобы уведомить его о том, что клиент уходит (отсоединение). Если запрос AJAX успешно достигнет сервера, метод OnDisconnected будет запущен немедленно. ЕСЛИ, что запрос AJAX не может выйти на сервер из-за сетевых условий или других невидимых условий, то OnDisconnected не будет гореть, пока не истечет ConnectionTimeout (конфигурация).

Soooo длинный рассказ короткий, OnDisconnected должен всегда в конечном итоге пожар для каждого клиента и каждого браузера. Если это не так, вы должны обязательно указать проблему на GitHub.

Надеюсь, это поможет!

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