Event Aggregator proxy för SignalR

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Dec 2003

Event Aggregator proxy för SignalR

Var trött på att vi hade en SignalR hub för varje typ av event vi ville propagera till vyn, så skrev en liten proxy för servside events till client

Skulle vara supersnällt om ni kunde testa den från ett MVC projekt för att se att den funkar för alla

Från nuget konsolen

Install-Package SignalR.EventAggregatorProxy

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Dec 2003

Nu med wiki

https://github.com/AndersMalmgren/SignalR.EventAggregatorProx...

Behöver folk som testar detta för att hitta svagheter med apiet, wink, wink

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Dec 2003

Ny version ute, en del buggar fixade.

Ett steg kvar är att få klientkoden att fungera med requirejs, dock är inte signalR byggt för AMD så vet inte om det går?

edit: Vad jag menar är att signalR skapar ett dynamiskt script server side med adressen "signalr/hubs" den använder inte AMD define, kan man ändå använda requireJS för att se till att min fil laddar efter signalr/hubs?

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Dec 2003

Ny version ute, nu kan man använda generiska events. Tyvärr kan jag inte avgör vilka generiska arguments som används när det dynamiska scriptet skapas så de generiska typargumenten måste deklareras som strängas såhär

signalR.eventAggregator.subscribe(MyApp.Events.MyGenericEvent.of("System.String"), this.onMyGenericEvent, this);

Detta mappar mot en .NET class som ser ut ungefär såhär

public class MyGenericEvent<T> : EventBase { public T Value { get; set; } }

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Dec 2003

Fixade en client för .NET

Installera

Install-Package SignalR.EventAggregatorProxy.Client.DotNet

Den kräver 0.3.33 eller senare av EventAggregatorProxy

Lyssna på events såhär

public class MyViewModel : IHandle<MyEvent> { public MyViewModel(IEventAggregator eventAggregator) { eventAggregator.Subscribe(this); } public void Handle(MyEvent message) { //Act on MyEvent } }

https://github.com/AndersMalmgren/SignalR.EventAggregatorProx...

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Dec 2003

Ny version 1.0.51

  • Fixat trådsäkerhet, tack till de här på forumet som bollade idéer

  • Klienterna trottlar nu sina subscriptions så flera efterföljande subscriptions genererar bara ett anrop till servern

  • Man kan nu subscriba flera ggr till samma event men med olika constraint

Ny version av .NET klienten 1.0.53

  • Trottlar subscriptions så flera efterföljande subscriptions genererar bara ett anrop till servern

  • Man kan nu subscriba flera ggr till samma event men med olika constraint

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Dec 2003

Ojdå, introducerade en liten bugg som kan visa sig om man rekursivt itererar över sin Vymodell (Subscriber).
Varje subscriber har en referens till en array som innehåller alla dess subscriptions, problemet är bara att varje subscription har en referens till sin subscriber. Så ramverk som förlitar sig på att rekursivt iterera över objekt utan att kolla om den redan besökt objektet (Lite naivt om du frågar mig) kommer att ge stack overflow.

Detta är åtgärdat i 1.0.57 av libbet

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Dec 2003

Ny version 1.1.67

  • Samma klient kan ny lyssna på samma event multipla gånger från olika komponenter

Ny version av .NET klienten 1.1.77

  • Samma klient kan ny lyssna på samma event multipla gånger från olika komponenter

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Dec 2003

SignalR 2.0 Support fixat

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Dec 2003

Fixat ett gäng småbuggar och nu med live demo

http://malmgrens.org/signalr/

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Dec 2003

Sådär, ny version, fixat så att klienterna kan återuppkoppla sig om apppoolen recyclar. Bra för siter med schemalagd recycle

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Dec 2003

Kul XSockets har fått upp ögonen för mitt lib

http://xsockets.net/xsockets-vs-signalr

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Dec 2003

Fortsätter att lägga till funktioner för detta lib. Nu finns det en Angular wrapper för klient-koden

Installeras genom nuget

Install-Package SignalR.EventAggregatorProxy.Client.Angular

Mer info
https://github.com/AndersMalmgren/SignalR.EventAggregatorProx...