我試圖使用SignalR.EventAggregatorProxy 庫,但我無法讓我的頭圍繞文檔或演示。我不需要使用Ninject,我只需要在服務器端和Angular SPA上使用WEB API的簡單測試應用程序。SignalR.EventAggregatorProxy簡單示例問題
這是我到目前爲止有:
Startup.cs
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
var proxy = new Lazy<IEventAggregator>(() => new Eventer());
GlobalHost.DependencyResolver.Register(typeof(IEventAggregator),() => proxy.Value);
app.MapEventProxy<Message>();
}
}
消息類
public abstract class Message {}
public class MyMessage : Message
{
public int Number { get; set; }
}
Eventer.cs類射擊事件
public class Eventer : IEventAggregator
{
public void Subscribe(Action<object> handler)
{
Task.Factory.StartNew(() =>
{
int number = 0;
while (true)
{
handler.Invoke(new MyMessage { Number = number++ });
System.Threading.Thread.Sleep(1000);
}
});
}
}
簡單的應用程序.js
(function() {
'use strict';
var app = angular.module("TestApp", ['signalR.eventAggregator']);
app.controller("TestCtrl", ['$scope','$http', function ($scope, $http) {
function onEvent(e) {
console.log("event received => ", e);
};
$scope.eventAggregator().subscribe(EventAgrTest.Events.MyMessage, onEvent);
$scope.headerText = "HEADER";
}]);
})();
和index.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" ng-app="TestApp">
<head>
<title></title>
<script src="Scripts/jquery-1.6.4.js"></script>
<script src="Scripts/jquery.signalR-2.2.0.js"></script>
<script src="Scripts/jquery.signalR.eventAggregator-1.4.141.0.js"></script>
<script src="/signalr/hubs"></script>
<script src="/eventAggregation/events"></script>
</head>
<body ng-controller="TestCtrl">
<h1>{{headerText}}</h1>
<script src="Scripts/angular.js"></script>
<script src="Scripts/jquery.signalR.eventAggregator.angular-1.4.143.0.js"></script>
<script src="Scripts/app.js"></script>
</body>
</html>
當我運行應用程序我得到:指向錯誤 「類型錯誤無法讀取屬性未定義的 '訂閱'」 排隊
signalR.eventAggregator.subscribe(type, function(e) { ...
在jquery.signalR.eventAggregator.angular-1.4.143.0.js
我敢肯定,我失去了一些東西,但我不知道是什麼。
Wiki中有一部分叫做Implement約束處理程序(https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki/Implement-constraint-handlers),它應該像從抽象類繼承一樣簡單,但我不確定需要從這個類繼承什麼。
啊,真的錯過了。將在文檔中更清楚地說明。我可能會在將來更改,以便客戶端腳本(jquery.signalR.eventAggregator-1.4.141.0.js)不直接使用事件聚合器。那麼這個命令並不重要。這將是一個突破性的變化,因爲那麼庫的用戶需要使用事件聚合器 – Anders
我確保這不會再發生https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/commit/f438fe7994b1151d296bd6534cde1657f81cc2a8 – Anders