2013-08-08 2 views
2

Рабочего процесс что-то вроде этого:как создать клиент сообщения как синглтон в angularjs

  • пользователя отправляет какое-то просьба
  • сервер отвечает сразу с «да, у вашего запрос, будет работать на нем»
  • пользователь информируется о том, что сервер работает на нем
  • когда заканчивается сервер, он говорит signalr хаб: эй я закончил„эту задачу“для„этого парня“
  • концентратор направляет сообщение в angularjs клиента
  • клиент рассылает сообщение из

теперь, если пользователь все еще находится на той же точки зрения

  • контроллер для просмотра обрабатывает сообщение, и сфера обновляется

в противном случае пользователь хочет сделать что-то еще, навигация от страницы, и т.д ..

  • ничего не прослушивает сообщения, поэтому его упал

Примером здесь существует http://sravi-kiran.blogspot.com/2013/05/ImplementingSignalRStockTickerUsingAngularJSPart1.html

Просить некоторых людей в IRC на угловой, и они не особенно нравится, как создается клиент в инициализации или в том, что он на заводе, или что обратные вызовы перенаправляются на завод.

Некоторые из отзывов включали что-то о app.run, услуге и вещании событий, все очень расплывчатые.

Как мне реализовать что-то подобное? Сначала я думал, что сервис, возвращающий синглтон, хорош, но, видимо, нет? Похоже, что есть лучший способ?

ответ

0

Я создал LIB под названием SignalR.EventAggregatorProxy только для случаев, как эти

Установка с помощью NuGet

Install-Package SignalR.EventAggregatorProxy 

Проверьте вики для того, как настроить его https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki

После установки все, что вы нужно todo, чтобы заставить его прослушать событие на заднем конце от javascript

Ниже код является Knockoutjs MVVM, но может быть легко изменен на угловом MVC как код

ViewModel = function() { 
    signalR.eventAggregator.subscribe(MyApp.Events.TestEvent, this.onTestEvent, this); 
}; 

ViewModel.prototype = { 
    onTestEvent: function(message) { 
     console.log(message); 
    } 
}; 
+0

Я действительно не имеют каких-либо проблем с серверной стороны, как на самом деле, все, что уже сделано. Мне интересно, как настроить jquery-клиент как одноточечный в угловом, чтобы он мог фактически получать сообщения от концентратора (так как clientid изменяется с каждым переходом страницы, если он не является одиночным) –

+0

Его право SPA ? Если нет, вы не можете сделать синглтон. Мой вышеприведенный код - это лучший способ получить то, что вы хотите, поэтому я разместил его – Anders

+0

Да, это то, что я говорю, я хочу знать технические детали *, как * I ** должен ** иметь клиент, написанный , как и в случае службы? создано в app.run? и т. д. –

-1

Каждый раз, когда вы переходите к новой веб-страницы все загружается снова: CSS, JS скрипты, и новое соединение SignalR создается.

Вот demo использования SignalR + AngularJS вместе

+0

Это неправда, я специально добавил метку angularjs к моему вопросу, и angularjs находится в теме. пожалуйста, прочитайте о SPA-процедурах перед публикацией чего-то подобного. На самом деле, я только что получил все, что работает, его синглтон, навигация между страницами работает, а идентификатор одинаковый на всем протяжении, если только они не попали в f5. –

+0

Вы использовали тот же подход, что и вы упомянули в вопросе? Я имею в виду, сервис, блок запуска и события для уведомления после запуска соединения. Дайте мне знать некоторые подробности, чтобы я мог обновить сообщение в блоге :) –