Ich arbeite an diesem Projekt, bei dem es eine Website gibt, die feedded Daten in "Echtzeit" durch einen Duplex-Dienst auf einem fernen Server erhält. Die Updates haben eine Frequenz von etwa einer Sekunde, und ich benutze SignalR Client-Seite, um die Ansicht zu aktualisieren. (Jedes Mal, wenn ein "Paket" aus dem Service eingeht, informiere ich meine Kunden).
Zur Zeit habe ich Probleme mit dieser Lösung, weil der Duplex-Dienst funktioniert. Wann immer es keine "Echtzeit" -Verbindung zum Backend-Server gibt, der sie mit Daten versorgt, sollte der Dienst einfach den neuesten Datenbankeintrag an meinen Client senden. Das funktioniert, aber meine Kundenansicht scheint das nicht richtig zu erfassen. Wenn ich versuche, die Ansicht zu aktualisieren, ist es tatsächlich zufällig, welche Werte von Zeit zu Zeit aktualisiert werden. (Beim Debuggen sind alle Werte in den notify-Methoden enthalten)
Ich habe versucht, jquery / ajax zu verwenden, um eine Methode in meinem Controller aufzurufen, die die Verbindungen wie folgt einrichtet:
%Vor%Und in meinem Controller:
%Vor%Nach vielen Versuchen habe ich darüber nachgedacht, den Backend-Service auch auf SignalR umzustellen. Habe ich es richtig verstanden, dass SignalR die oben beschriebene Funktionalität sowohl auf Server als auch auf Client ersetzen kann?
Wenn jemand das gleiche Setup hat, bin ich sehr interessiert daran zu hören, wie Sie dieses Problem gelöst haben:)
Ja. SignalR
verwendet WebSockets
, wo es kann und hat Fallbacks, wo es nicht möglich ist. WebSockets
sind viel besser als ein Duplex-Service, weil:
TCP
Verbindung, um Daten auf beide Arten zu senden. IP
des Clients nicht kennen (dies ist bei einem Duplex-Dienst der Fall, der bei einem gemeinsam genutzten IP
nicht funktioniert). Also ... ja. SignalR
passt gut.