2012-02-23 2 views
0

фона:SignalR - Почему еще один метод отключения Hub, вызванный, когда пользователь перезагружает страницу?

У меня возникли проблемы выяснить, почему Disconnect вызывается из концентратора, который еще не был инициализирован.

У меня есть две различные точки зрения MVC, что создает различные сигнальные соединения:

  • ListView (JS создает подключение к ListHub, который делает не реализовать IDisconnect)
  • DetailsView (JS создает подключение к DetailsHub, который делает реализации IDisconnect)

Когда пользователь входит в систему, он/она перенаправляется в ListView, где Javas cript создает соединение с ListHub, чтобы страница была осведомлена о событиях, которые блокируют/разблокируют элементы в списке. Когда пользователь нажимает на элемент, сигнал отправляется в ListHub, и элемент блокируется пользователем. После этого я останавливаю клик от выполнения запроса GET с помощью event.preventDefault(), и он работает хорошо.

Проблема состоит в том ... Когда пользователь уходит на другую страницу - или если страница просто перезагружается - метод Disconnect от DetailsHub срабатывает. Я не понимаю, почему это происходит. Помните, что ListHub является единственным активным центром до сих пор. Никакие другие концентраторы или соединения не были инициализированы. Тем не менее, это поведение, которое я получаю.

То, что я пытаюсь достичь

То, что я пытаюсь достичь здесь, чтобы сделать что-то, когда Disconnect поднимается/вызывается на DetailsHub. Я ничего не хочу, когда пользователь отключается от ListHub.

ответ

1

Это написано в вики проекта signalR в:

Всякий раз, когда клиент отключается, метод Disconnect будет вызван на все концентраторы, которые реализуют IDisconnect. Когда этот метод вызывается, вы можете использовать Context.ConnectionId для доступа к отключенному клиенту.

https://github.com/SignalR/SignalR/wiki/Hubs

+0

есть другой способ просто отключить этот клиент. Он прервет весь подключенный клиент. –

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