Frage

Kann mir jemand wissen lassen, wie SignalR intern auf hoher Ebene funktioniert?

Ich vermute, es spüle die Daten mit Verwendung Response.Flush und auf der Clientseite sendet es in bestimmten Abständen AJAX -Anfragen. Ist es richtig?

War es hilfreich?

Lösung

Nein, SignalR ist eine Abstraktion über eine Verbindung. Es gibt Ihnen zwei Programmiermodelle über diese Verbindung (Hubs und anhaltende Verbindungen). SignalR verfügt über ein Konzept von Transporten, jeder Transport entscheidet, wie Daten gesendet/empfangen werden und wie sie verbindet und getrennt werden.

SignalR hat einige eingebaute Transporte:

  1. Websockets
  2. Server gesendete Ereignisse
  3. Für immer Rahmen
  4. Lange Umfragen

SignalR versucht die "beste" Verbindung, die von Server und Client unterstützt wird (Sie können sie auch zwingen, einen bestimmten Transport zu verwenden).

Das ist das hohe Niveau. Wenn Sie sehen möchten, wie jeder Transport umgesetzt wird, können Sie sich das ansehen Quellcode.

Für jeden Transport gibt es auch Client -Code:https://github.com/signalr/signalr/tree/master/src/microsoft.aspnet.signalr.client.js

Wenn Sie fragen, wie der lange Wahltransport insbesondere funktioniert:

Es sendet eine AJAX -Anforderung an den Server, der asynchron darauf wartet, dass ein Signal antwortet. Wenn es ein Signal oder die Anforderungen ausgeht, kehrt es vom Server zurück und sendet eine andere Anforderung und der Prozess wird fortgesetzt. (Ich habe einige Details darüber gelassen, wie der Kunde, den er gesehen hat, das verfolgt, was er gesehen hat, damit er keine Nachrichten verpasst.)

Hoffentlich beantwortet das den größten Teil Ihrer Frage.

Andere Tipps

@Davidfowl hat den Hauptanteil bereits beantwortet. Um jedoch einige Details zum Verhalten des Verhaltens von Transporten, insbesondere zwischen WebSocket und anderen Transporten, zu geben; Nachfolgend sind einige Punkte aufgeführt.

  • WebSocket ist der einzige Transport, der eine echte dauerhafte Zwei-Wege-Verbindung zwischen Client und Server herstellt. WebSocket wird jedoch nur von IIS 8 oder höher und den neuesten Versionen von Internet Explorer, Google Chrome und Mozilla Firefox unterstützt.
  • Während der Server Ereignisse, für immer Frame und lange Umfragen sandte, folgen alle drei einer Einweg-Kommunikation und werden von den meisten Browsern unterstützt.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top