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?
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.
Tags und Links signalr