Kann SignalR verpasste Nachrichten verarbeiten?

8

Sagen Sie, meine Netzwerkverbindung wird für ein paar Sekunden unterbrochen und ich vermisse einige SignalR-Server-Push-Nachrichten.

Wenn ich die Netzwerkverbindung wiedererlange, 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 sicherzustellen?

  • In regelmäßigen Abständen (2-3 Minuten) Umfrage um Server-Daten zu überprüfen?
  • Irgendwie einen Verlust des Netzwerks auf der Client-Seite erkennen und einen Ajax-Aufruf durchführen, um die Daten über die Netzwerkwiederherstellung zu erhalten?
  • etwas anderes?
reach4thelasers 23.04.2012, 14:03
quelle

1 Antwort

7

Hier sind ein paar Gedanken:

Wenn Sie nicht viele Nachrichten pro Sekunde senden, sollten Sie in den Nachrichten selbst keine Daten senden. 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 Netzwerkwiederherstellung kann der Client nach [Letzte ID] nach allen Nachrichten fragen. Wenn eine Nachricht empfangen wird, deren ID nicht mit der zuletzt empfangenen ID übereinstimmt, wissen Sie, dass eine Trennung aufgetreten ist, und können den Server nach den fehlenden Informationen fragen.

    
MikeC 26.04.2012, 13:04
quelle

Tags und Links