2

工作流程是这样的:

  • 用户提交某种请求
  • 服务器立即响应“是的,收到您的请求,将处理它”
  • 用户被告知服务器正在处理它
  • 当服务器完成时,它告诉信号器集线器:嘿,我为“这个人”完成了“这个任务”
  • 集线器将消息转发到 angularjs 客户端
  • 客户端将消息广播出去

现在如果用户仍然在同一个视图上

  • 视图控制器处理消息,并更新范围

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

  • 没有人在听消息,所以它被丢弃了

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

向 IRC 中的一些人询问 Angular,他们并不特别喜欢在初始化时如何创建客户端,或者它在工厂中,或者回调被转发到工厂中。

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

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

4

2 回答 2

0

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

这是一起使用 SignalR+AngularJS的演示

于 2013-08-08T18:28:18.150 回答
0

我为此类情况创建了一个名为 SignalR.EventAggregatorProxy 的库

使用 nuget 安装

Install-Package SignalR.EventAggregatorProxy

检查 wiki 以了解如何设置它 https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki

设置完成后,您需要做的就是让它监听来自 javascript 的后端事件

下面的代码是 Knockoutjs MVVM,但可以很容易地更改为类似 Angular MVC 的代码

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

ViewModel.prototype = {
    onTestEvent: function(message) {
        console.log(message);
    }
};
于 2013-08-08T16:13:14.273 回答