如何在angularjs中创建一个消息客户端作为单例

时间:2013-08-08 16:08:19

标签: angularjs signalr signalr.client

工作流程如下:

  • 用户提交某种请求
  • 服务器立即响应 ,并且“是的,得到了​​您的请求,将继续努力”
  • 用户被告知服务器正在使用它
  • 当服务器完成时,它告诉信号器集线器:嘿,我为“这个人”完成了“这个任务”
  • 集线器将邮件转发给angularjs客户端
  • 客户端广播消息

现在,如果用户仍在同一视图

  • 用于视图的控制器处理消息,并且范围已更新

否则,用户想要做其他事情,离开页面等等。

  • 什么都没有收听消息,所以它被删除了

这里有一个例子 http://sravi-kiran.blogspot.com/2013/05/ImplementingSignalRStockTickerUsingAngularJSPart1.html

要求IRC中的某些人提供角度,他们并不特别喜欢在初始化中创建客户端,或者在工厂中创建客户端,或者将回调转发到工厂。

一些反馈包括有关app.run或服务的内容,以及广播事件,都非常模糊。

我应该如何实施这样的事情?我最初认为返回单身的服务很好,但显然不是吗?好像有更好的方法?

2 个答案:

答案 0 :(得分:0)

我为这样的案例创建了一个名为SignalR.EventAggregatorProxy的库

使用nuget安装

Install-Package SignalR.EventAggregatorProxy

检查wiki以了解如何设置它 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);
    }
};

答案 1 :(得分:0)

每次导航到新网页时,都会再次加载所有内容:创建CSS,JS脚本和新的SignalR连接。

这是一起使用SignalR + AngularJS的demo