2012-04-23 14 views
8

Sagen Sie, dass meine Netzwerkverbindung für ein paar Sekunden abfällt und ich einige SignalR Server-Push-Nachrichten vermisse.Kann SignalR verpasste Nachrichten verarbeiten?

Wenn ich die Netzwerkverbindung wieder erhalte, sind die Nachrichten, die ich verpasst habe, verloren? Oder behandelt signalR sie und drückt sie aus, wenn ich die Verbindung wieder herstelle?

Wenn es verpasste Nachrichten nicht verarbeiten kann, was ist der empfohlene Ansatz, um Konsistenz zu gewährleisten?

  • In regelmäßigen Abständen (2-3 Minuten) Abfrage, um Server-Daten zu überprüfen?
  • Irgendwie Netzwerkverlust auf der Client-Seite erkennen und einen Ajax-Aufruf ausführen, um die Daten über die Netzwerkwiederherstellung zu erhalten?
  • etwas anderes?

Antwort

7

Hier sind ein paar Gedanken:

Wenn Sie nicht eine Menge Nachrichten pro Sekunde senden, sollten Sie in den Nachrichten selbst keine Daten sendet. Stattdessen ist die Nachricht nur ein "Ping" an die Clients, der ihnen sagt, dass sie die Serverdaten holen sollen, wenn sie können. Kombinieren Sie das mit einer regelmäßigen Umfrage, wie Sie gesagt haben, und Sie können sicher sein, dass Sie keine Nachrichten verpassen werden. Sie könnten sich nur verspäten.

Wenn Sie viele Nachrichten schnell senden, wie wäre es mit einer sequentiellen ID? Denken Sie an eine SQL-Identitätsspalte. Ihre Kunden müssen die zuletzt erhaltene ID verfolgen. Nach einer Neuverbindung des Netzwerks kann der Client nach [Letzte ID] nach allen Nachrichten fragen. Wenn eine Nachricht empfangen wird, deren ID nicht mit der zuletzt empfangenen übereinstimmt, wissen Sie, dass eine Trennung aufgetreten ist, und können den Server nach den fehlenden Informationen fragen.

+1

Interessante Idee, Ich mag die zweite, obwohl wäre schön, wenn SignalR diese Funktionalität für uns eingewickelt ... vielleicht in einer späteren Version denke ich! – reach4thelasers

+1

Ich verstehe, was Sie wollen, aber die Idee hinter Messaging ist Feuer und vergessen. Also sehe ich das nicht als ein Kernstück von SignalR. Ich stimme der Workaround @MikeC als eine gute Option tho. –

+0

Haben wir eine Option oder Funktion zum Ein- und Ausschalten wie "Nachrichten zufällig senden" in SignalR? – Kurkula

Verwandte Themen